Java 从System.out.println写入文件
我已经替换了许多字符串并输出了结果,现在正试图将这些行写入文本文件。这就是我所做的。我创建了一个新文件:Java 从System.out.println写入文件,java,file,createfile,Java,File,Createfile,我已经替换了许多字符串并输出了结果,现在正试图将这些行写入文本文件。这就是我所做的。我创建了一个新文件: File newfile = new File("/Users/Bill/Desktop/newfile.txt"); if (newfile.exists()) { System.out.println("File exists"); } else { newfile.createNewFile(); System.out.p
File newfile = new File("/Users/Bill/Desktop/newfile.txt");
if (newfile.exists()) {
System.out.println("File exists");
} else {
newfile.createNewFile();
System.out.println("New file created");
}
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
然后我尝试将System.out.println(第[I]行)的结果写入创建的文件
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
不过,我没有得到我所期望的。有什么建议吗
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
写入文件:
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
public class WriteToFile {
private String path;
private boolean append = false;
public WriteToFile(String filename) {
path=filename;
}
public WriteToFile(String filename, boolean appendfile){
path=filename;
append=appendfile;
}
public void write(String text) throws IOException {
FileWriter filewrite = new FileWriter(path, append);
PrintWriter print = new PrintWriter(filewrite);
print.printf("%s" + "%n", text);
print.close();
}
}
每次调用
WriteToFile.write
,它都会重新打开文件进行写入,截断文件的原始内容。您应该在构造函数中打开该文件一次(并将PrintWriter
存储在字段中),然后添加一个close
方法,该方法为PrintWriter
调用close
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
在呼叫端,执行以下操作:
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
WriteToFile writer = new WriteToFile(filename);
try {
// writer.write(...);
} finally {
writer.close();
}
通过在
finally
块中调用close
,可以确保即使异常导致函数提前退出,文件也已关闭。查看代码中构造函数的第二个参数
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
FileWriter filewrite = new FileWriter(path, append);
看,上面写着“追加”。猜猜它是干什么的。如果你不确定,请阅读
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
现在,看看您是如何初始化append
的
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
private boolean append = false;
此代码的行为完全符合预期。这只是开发人员的错。修复它:)只需使用该方法在系统上设置文件名
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
系统设置(文件名)强>
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
然后,每当我们想使用System.out.println()打印时,它都会直接打印到您提到的文件名。显然
WriteToFile
不起作用。显示该类的源代码。您需要阅读一本好的Java书籍,例如Core Java。提供堆栈跟踪。不,每次写入都重新打开文件仍然是一个坏主意,即使您以追加模式打开它。(而且,它不可移植。例如,Windows没有附加模式——它是在结束模式下模拟使用的。)仅使用文件名是不起作用的。请参阅本帖:
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}