java哪里学习好?
这里可以考虑一下
java问题
直接给s赋值readContent问题如下:
假设文件有两行第二行
读取两个循环,**个s赋值readContent,readContent的值为”**行”,然后循环,读取第二行,再次赋值readContent就会变成”第二行”,**行的丢失;
这里StringBuff其功能是将读取的内容连接成字符串;java教程菜鸟教程视频。
然而,这里的例子确实有问题,但问题不在StringBuffer在s变量上,s中间两步不必要,循环内直接改为以下形式:
删除s.getBytes()和newString
此外,除上述问题外,请总结本代码的问题:
1.未释放文件资源
2.不涉及多线程的,应使用StringBuilder字符串拼接串,而不是字符串StringBuffer,因为StringBuilder更快(但是StringBuilder线程不安全,StringBuffer线程安全);
3.异常处理有问题,如有问题IO异常时,返回异常信息的字符串?那么如何区分字符串是异常的还是从文件中读取的呢?字符串不应返回这里,而应直接声明异常。如有异常,应将其扔出,直到顶层程序可以处理。
修改代码如下:

注意第27行,声明本方法可能被抛出IOException异常,主程序稍后处理。另外,注意第30行,创建InputStreamReader指定文件编码为utf为了避免乱码,如果您的文件存储在其他类型的编码中,则会出现乱码。
调用代码如下:
getContent主程序调用函数
注18行和21行,分别处理正常情况和异常情况,读取异常时,将调用第21行打印异常信息;
整体代码如下:
全部代码
接下来我们来看看代码执行情况。
当我们想读的文件不存在时,执行结果如下:
当我们想读的文件不存在时,抛出异常
看,当文件不存在时,抛出异常,并通过异常处理程序捕获和打印,您可以看到哪一行代码错误[getContent(App.java:说明在App.java文件中的getContent方法,文件29行出错。
2.正常情况下呢?当然是输出文件的内容。我们在以下文件中放下文件”D:\\file.txt”处:
要阅读的文件内容
执行结果如下:
正常情况下,输出文件的内容
**,我不知道你读了什么书,是不是课本,但我觉得质量不高。这里有一些推荐给你的书。你可以买下来看看:
1、HeadFirstjava
2、菜鸟教程Java
3.最权威的自然是TheJava®LanguageSpecificati了
祝你学习之路顺利