我相对较新的Java并尝试学习I / O语法。有人能给我一个概述这个代码的作用吗?谢谢!
import java.io.*;
public class FileReader {
private String openFile="";
private String saveFile="";
FileReader(openFile, saveFile)
{
this.openFile=openFile;
this.saveFile=saveFile;
}
public String process(){
System.out.println(this.openFile);
System.out.println(this.saveFile);
BufferedReader open=null;
FileReader openFR=null;
FileWriter save=null;
int counter=0;
String output="";
if(openFile.equals("")){
return "No open file specifified\n";
}
if(this.saveFile.equals("")){
return "No save file specified\n";
}
try {
openFR = new FileReader(this.openFile);
open = new BufferedReader(openFR);
} catch (FileNotFoundException e) {
return ("Open file no longer exists\n");
}
try {
save = new FileWriter(saveFile);
}
catch (IOException e){
return ("Error saving the file\n");
}
try{
String temp = open.readLine();
while(temp != null){
temp = open.readLine();
counter++;
save.write(output + "\n");
}
} catch (IOException e){
e.getStackTrace();
return ("Error reading open file");
}
try {
save.flush();
} catch (IOException e) {
e.printStackTrace();
return ("Error writing save file");
}
return "Operation completed successfully";
}
}
答案 0 :(得分:2)
这是不代码的一个很好的例子!
一些问题:
答案 1 :(得分:1)
将counter
个新行写入保存文件,因为output
始终为""
。我想它应该将一个文件复制到另一个文件,但应该有save.write(temp + "\n");
这样做。
答案 2 :(得分:1)
它打开两个文件,然后(如果两个文件都存在且可以打开),从第一个文件中读取行并将空行写入第二个文件中的无限循环,直到它到达第一个文件的结尾。
它不会关闭任何文件btw。
答案 3 :(得分:0)
它尝试复制文本文件,但似乎有一些错误。
答案 4 :(得分:0)
Here是Java I / O教程的链接。如果你想要掌握Java I / O,这是最好的起点。
您粘贴的代码尝试一次一行地将源文件复制到新的目标文件,但它包含可防止这种情况发生的错误,即:
答案 5 :(得分:0)
对我来说,除了抛出大量的编译时错误之外,这段代码绝对没有任何作用。
首先你的类名FileReader与java.io.FileReader冲突,所以你的调用
new FileReader(this.openFile);
实际上是试图实例化你的类FileReader的实例(没有构造函数接受单个字符串)而不是java.io.FileReader
这个openFR被声明为FileReader类型(你的FileReader不是java.io.FileReader)所以调用
open = new BufferedReader(openFR);
也失败了,因为BufferedReader需要一个java.io.FileReader对象。
FileReader的构造函数不声明参数的类型:
FileReader(openFile, saveFile) {
this.openFile=openFile;
this.saveFile=saveFile;
}
应该是:
FileReader(String openFile, String saveFile) {
this.openFile = openFile;
this.saveFile = saveFile;
}
一旦修复了这些错误,程序会做什么:
它尝试通过读取openFile中的所有行并将它们写入saveFile来复制文件。
它实际上做的是:
从文件中读取第一行并将其丢弃。进入一个循环,它继续读取行并递增一个计数器(这也是错误的,因为它从不包括计数中的第一行,除非目的是忽略第一行???)。然后它为openFile中的每一行(减去第一行)的saveFile写一个空行。你也永远不会对计数器值做任何事情,那么计算它有什么意义呢?