这个java代码到底在做什么?
我正试图编写一个程序,要求我从文件中读取文本。在进行研究时,我发现这段代码正是我所需要的:这个java代码到底在做什么?,java,string,file-io,Java,String,File Io,我正试图编写一个程序,要求我从文件中读取文本。在进行研究时,我发现这段代码正是我所需要的: String string=""; try{ InputStream ips = new FileInputStream("WORDS.txt"); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr);
String string="";
try{
InputStream ips = new FileInputStream("WORDS.txt");
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String line;
while ((line=br.readLine())!=null){
System.out.println(line);
string+=line+"\n";
}
br.close();
}
catch (Exception e){
System.out.println(e.toString());
}
有人能解释一下这个代码是如何工作的吗?我是编程新手,对大部分代码都不熟悉。这不是为了家庭作业——这是我为个人利益而写的一个程序。谢谢。在较高级别上,它逐行读取文件,并构建一个由文件中的字符数据组成的字符串*
*以不必要的低效方式;循环中的字符串连接几乎总是应该用a的用法来代替。在您了解了程序的功能之后(这一点很重要,对于任何Java程序员来说,这些都是必不可少的概念,希望有人能够补充),下面是我要做的改进:
- 根本没有这方面的代码。把文件读入字符串的问题已经解决了。使用
- 不要在循环中使用字符串连接。使用StringBuilder。使用所需容量(如文件大小)的最佳猜测初始化StringBuilder
- 创建读取器时指定显式字符集。否则,您的程序将无法跨不同的计算机进行移植
- 不要先删除换行符,然后再添加它们,除非这确实是您想要的。这可能会更改正在读取的数据(如果原始文件使用不同的换行方案)
- 不要捕获异常并打印它。让它将调用堆栈向上传播到一段可以处理它的代码中
- 不要将结果字符串初始化为空。如果代码完成,字符串将保存您的数据,否则,您需要null或异常。空字符串只会增加查找错误的难度。最好不要初始化字符串,甚至不要初始化为null。然后,您会在这里得到一个很好的编译错误,要求您显式地指定发生异常时字符串应该是什么
- 将从文件读取的代码放在其自己的方法中。让它返回一个字符串。稍后对该字符串所做的操作与此方法无关