扫描仪与InputStreamReader

One*_*ree 13 java file input

有没有人碰巧知道下面两种读取输入文件的方法之间的性能是否存在差异?谢谢.

1)使用扫描仪和文件读取文件

Scanner input = new Scanner(new File("foo.txt"));
Run Code Online (Sandbox Code Playgroud)

2)使用InputStreamReader和FileInputStream读取文件

InputStreamReader input = new InputStreamReader(new FileInputStream("foo.txt"));
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 8

第一点是这些代码示例都没有读取文件.这可能听起来很愚蠢或不正确,但确实如此.他们实际做的是打开一个文件进行阅读.就他们实际做的而言,他们各自的效率可能没有太大差异.

当涉及到实际读取文件,最好的方法使用将取决于哪些文件包含,何种形式的数据必须是在你的内存算法等,这将决定它是否是更好地使用Scanner或原材料Reader,从性能的角度和更重要的是从使代码可靠和维护的角度.

最后,这可能不会对代码的整体性能产生重大影响.我所说的是你过早地优化你的应用程序.您现在最好忽略性能并选择使其余代码更简单的版本.当应用程序正在运行时,请使用一些有代表性的输入数据对其进 分析将告诉您读取文件所花费的时间,绝对值和相对于应用程序的其余部分.这将告诉您是否值得努力尝试优化文件读取.

我给出的唯一一点性能建议是从无缓冲的输入流或读取器读取字符的字符是低效的.如果需要以这种方式读取文件,则应该向堆栈添加BufferedReader.