【发布时间】:2017-11-10 11:26:16
【问题描述】:
我有以下代码可以从 CSV 中读取:
InputStream inp = getClass().getResourceAsStream(filename);
InputStreamReader r = new InputStreamReader(inp);
BufferedReader reader = new BufferedReader(r);
关于已回答的问题:
Java BufferedReader,
Convert InputStream to BufferedReader, What is the difference between Java's BufferedReader and InputStreamReader classes?
BufferedReader[BR] 和 InputStreamReader[ISR] 都实现了相同的接口。 BR 拥有 ISR 拥有的所有方法以及其他方法,包括非常有用的 readLine() 方法和不太有用但仍然相关的 skip() 方法。您不一定需要 BR 来读取单个字符,尽管在这方面 BR 可以比 ISR 更有效地做到这一点。唯一显着的区别是 FileReader 是 ISR 的子类,但不是 BR,尽管我在这个网站上的消息来源说 FileReader 由于替代品而不再真正使用。
我的研究表明,ISR 可以做的所有事情都被 BR 做得更好。我是一名年轻的开发人员,所以每个定义或导入的类对我来说似乎都是相关的。我想了解的是,如果某些类不再使用,是否会被新版本或框架取代。我想知道更有经验的开发者怎么说。那么,在使用 ISR 时是否有理由不使用 BR?
API 快速链接:
BufferedReader
InputStreamReader
【问题讨论】:
-
好吧,如果你想实现自己的 BufferedReader...
-
ISR 用于从 InputStream 中读取。 BR 从另一个阅读器读取。因此,如果您想在从流中读取时进行缓冲(通常是这种情况),您可以同时使用两者。如果您从内存中的字节/字符读取,或者从已经缓冲的输入流中读取,或者如果您知道要读取的字符数并一次读取它们,则不需要缓冲
-
在尝试提出更多问题之前,请阅读What types of questions should I avoid asking?。
标签: java io bufferedreader