Java FileWriter仅显示最后一行
当我使用Java FileWriter仅显示最后一行,java,filewriter,Java,Filewriter,当我使用System.out.println(data)显示变量数据时,它会显示“filename.txt”的内容(所有行)。 但是,当我使用myWriter.write(data)时,它只写入初始文件的最后一行。 我的任务是读取一个文件(在本例中为filename.txt),并将其内容复制到一个新文件(new.txt) PackageJavaApplication13; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.util.S
System.out.println(data)
显示变量数据时,它会显示“filename.txt”的内容(所有行)。
但是,当我使用myWriter.write(data)
时,它只写入初始文件的最后一行。
我的任务是读取一个文件(在本例中为filename.txt
),并将其内容复制到一个新文件(new.txt
)
PackageJavaApplication13;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
导入java.io.PrintWriter;
导入java.io.FileWriter;
导入java.io.IOException;
公共类读取文件{
公共静态字符串数据;
公共静态void main(字符串[]args)引发IOException{
试一试{
File myObj=新文件(“C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\JavaApplication13\\filename.txt”);
尝试(Scanner myReader=new Scanner(myObj)){
做{
data=myReader.nextLine();
}
while(myReader.hasNextLine());
PrintWriter out=new PrintWriter(“C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\JavaApplication13\\new.txt”);
FileWriter myWriter=newfilewriter(“C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\JavaApplication13\\new.txt”);
myWriter.write(数据);
myWriter.close();
out.close();
myReader.close();
}
}
catch(filenotfounde异常){
System.out.println(“发生错误”);
}
}
}
循环的每次迭代都会打开一个新的写入程序,然后写入,从而覆盖文件。相反,您应该在循环之前打开writer一次,然后在完成编写后关闭它。例如:
try(FileWriter myWriter=newfilewriter(“C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\JavaApplication13\\new.txt”)){
while(myReader.hasNextLine());
myWriter.write(myReader.nextLine());
}
}
Create,使用双参数构造函数append=true
否则每次都会覆盖文件。do{data=myReader.nextLine();}while(myReader.hasNextLine())代码>您认为该代码的作用是什么?你怎么会这么想?我试过了,但很遗憾,我不知道为什么它会显示相同的结果。。。无论如何谢谢你@Pshemo d'oh!你当然是对的。编辑和固定。