Java读取文件并删除行,无法找出错误
我正在处理一个项目,该项目有一个方法,可以读取文件,查找传入的字符串,写入一个名为temp的新文件(其中没有传入的行),然后删除原始文件并将temp重命名为原始名称。我可以毫无错误地运行它,但它不会将任何内容输出到新文件中。我已经完成了通常的调试,发现错误在于它将行写入新文件的行中。我觉得我犯了一个小小的错误,把事情说错了。如果有人能帮我解决,那就太好了 这是密码Java读取文件并删除行,无法找出错误,java,file-io,java.util.scanner,Java,File Io,Java.util.scanner,我正在处理一个项目,该项目有一个方法,可以读取文件,查找传入的字符串,写入一个名为temp的新文件(其中没有传入的行),然后删除原始文件并将temp重命名为原始名称。我可以毫无错误地运行它,但它不会将任何内容输出到新文件中。我已经完成了通常的调试,发现错误在于它将行写入新文件的行中。我觉得我犯了一个小小的错误,把事情说错了。如果有人能帮我解决,那就太好了 这是密码 public static void LineDelete(String Filename, String Content) thr
public static void LineDelete(String Filename, String Content) throws IOException {
try {
File flights = new File("AppData/" + Filename);
File temp;
temp = new File("AppData/temp.txt");
FileWriter fstream;
BufferedWriter out;
try (Scanner sc = new Scanner(flights)) {
fstream = new FileWriter("AppData/temp.txt", true);
out = new BufferedWriter(fstream);
boolean exis = temp.exists();
if (exis) {
temp.delete();
temp = new File("AppData/temp.txt");
boolean createNewFile = temp.createNewFile();
} else {
boolean creatNewFile = temp.createNewFile();
}
String f;
while (sc.hasNextLine()) {
f = sc.nextLine();
if (!f.equals(Content)) {
out.newLine();
out.write(f);
}
}
}
fstream.close();
//out.close();
flights.delete();
File flightsn = new File("AppData/" + Filename);
temp.renameTo(flightsn);
} catch (FileNotFoundException ex) {
Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, ex);
}
}
}您应该在
out
(BufferedReader)上调用close
您还应该在try-catch-finally中的finally子句中关闭它
你的代码应该是或多或少的
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class FileWrite {
public static void LineDelete(String Filename, String Content)
throws IOException {
BufferedWriter out = null;
File flights = new File("AppData/" + Filename);
File temp = new File("AppData/temp.txt");
FileWriter fstream = null;
try {
Scanner sc = new Scanner(flights);
fstream = new FileWriter("AppData/temp.txt", true);
out = new BufferedWriter(fstream);
boolean exis = temp.exists();
if (exis) {
temp.delete();
temp = new File("AppData/temp.txt");
boolean createNewFile = temp.createNewFile();
} else {
boolean creatNewFile = temp.createNewFile();
}
String f;
while (sc.hasNextLine()) {
f = sc.nextLine();
if (!f.equals(Content)) {
out.newLine();
out.write(f);
}
}
} catch (IOException ex) {
Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
out.close();
} catch (Exception e) {
Logger.getLogger(FileWrite.class.getName()).log(Level.SEVERE, null, e);
}
}
if(flights.exists()){
flights.delete();
File flightsn = new File("AppData/" + Filename);
temp.renameTo(flightsn);
}
}
}
好的,我发现了一个小问题,另一个问题,当它删除时,会留下空行,有没有办法删除所有空行…哎呀,你在这里结束之前删除并重命名了!