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.

 24
Author: Spliff, 2011-11-03

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.

 47
Author: Michael Borgwardt,
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.

 6
Author: JB Nizet,
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.

 2
Author: Peter Lawrey,
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