Wszystko,java.net.URLConnection.guessContentTypeFromStream i text/plain
Próbuję zidentyfikować pliki tekstowe z zakończeń linii komputerów Mac, a wewnątrz InputStream, cicho konwertować je do zakończeń linii Windows lub Linux (ważne część to naprawdę postać LF). W szczególności pracuję z kilkoma interfejsami API, które pobierają InputStreams i są trudne do znalezienia \ n jako nowe linie.
Czasami dostaję pliki binarne. Oczywiście plik, który nie jest tekstem, nie powinien mieć tej zamiany, ponieważ wartość, która odpowiada \ r, oczywiście nie może po cichu być śledzona przez \ n bez poważnych problemów.
Próbuję użyć java.net.URLConnection.guessContentTypeFromStream
i wykonuję tylko konwersje końcowe, jeśli typem jest tekst/zwykły. Niestety, "text/plain"
nie wydaje się być w swojej gamie wartości zwracanych; wszystko, co dostaję, to null
dla moich płaskich plików tekstowych i prawdopodobnie nie jest bezpiecznie założyć, że wszystkie niemożliwe do zidentyfikowania pliki można zmodyfikować.
Jaką lepszą bibliotekę (najlepiej w publicznym repozytorium Maven i open-source) mogę użyć, aby to zrobić? Ewentualnie, jak mogę sprawić, aby guessContentTypeFromStream działał dla mnie? Wiem, że opisuję z natury niebezpieczną aplikację i żadne rozwiązanie nie może być idealne, ale czy powinienem po prostu traktować "zerowy" jako "tekst/zwykły" i po prostu muszę napisać sam kod, żeby szukać dowodów, że to nie jest "t?
+1 dla "gamy". – skaffman