InputStreamReader vs FileReader
Nie mogę określić żadnej różnicy między InputStreamReader
i FileReader
poza sposobem inicjalizacji obu. Czy jest jakaś korzyść z używania jednego lub drugiego? Większość innych artykułów obejmuje FileInputStream
vs InputStreamReader
, ale zamiast tego kontrastuję z FileReader
. Wydaje mi się, że obaj mają ten sam cel.
3 answers
Po pierwsze, InputStreamReader
może obsługiwać wszystkie strumienie wejściowe, a nie tylko pliki. Inne przykłady to Połączenia sieciowe, zasoby classpath i pliki ZIP.
Po Drugie, FileReader
nie pozwala na określenie kodowania i zamiast tego używa domyślnego kodowania plaform, co czyni go praktycznie bezużytecznym, ponieważ jego użycie spowoduje uszkodzenie danych, gdy kod zostanie uruchomiony na systemach z różnymi domyślnymi kodowaniami platformy.
Krótko mówiąc, zapomnij, że FileReader
istnieje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 08:13:41
FileReader odczytuje znak z pliku w systemie plików. InputStreamReader odczytuje znaki z dowolnego rodzaju strumienia wejściowego. Strumień może być strumieniem pliku, ale może być również strumieniem uzyskanym z gniazda, połączenia HTTP, obiektu blob bazy danych, cokolwiek.
Zazwyczaj wolę używać inputstreamreadera do wczytywania strumienia plików do odczytu z pliku, ponieważ pozwala na określenie określonego kodowania znaków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 08:14:39
FileReader rozszerza program InputStreamReader. Jedyną różnicą jest to, że FileReader ma konstruktory, które zakładają, że czytasz z pliku, takiego jak String filename
, File file
i FileDescriptor fd
Proponuję spojrzeć na źródło FileReader, aby dowiedzieć się więcej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 08:10:42