我正在编写一个程序来查找信息并通过制作临时文件从文本文件中删除它们,删除原始文件然后将temp重命名为原始文件。到目前为止,我已经实现了编写程序,当我使用Windows控制台编译它时,它可以工作,但是当我尝试在netbeans中运行相同的代码时,它无法工作,因为它无法删除和重命名原始文件。我正在寻找解决这个问题的方法。
这里是代码,它在我使用Windows控制台编译时有效,但在netbeans
中没有import java.io.*;
public class rename {
public static String x="1123";
public void removeLineFromFile(String file, String lineToRemove) {
try {
File inFile = new File(file);
if (!inFile.isFile()) {
System.out.println("Parameter is not an existing file");
return;
}
//Construct the new file that will later be renamed to the original filename.
File tempFile = new File(inFile.getAbsolutePath() + "2.tmp");
BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
//Read from the original file and write to the new
//unless content matches data to be removed.
while ((line = br.readLine()) != null) {
if (!line.trim().contains(lineToRemove)) {
pw.println(line);
pw.flush();
}
}
pw.close();
br.close();
//Delete the original file
if (!inFile.delete()) {
System.out.println("Could not delete file");
return;
}
//Rename the new file to the filename the original file had.
if (!tempFile.renameTo(inFile))
System.out.println("Could not rename file");
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
rename util = new rename();
String jj;
util.removeLineFromFile("File.txt", x);
}
}
答案 0 :(得分:0)
Humn ...关闭br
和pw
后,请尝试将其设置为null
并致电System.gc()
。
答案 1 :(得分:0)
重命名
public void rename(String old, String newpath) {
try {
File folder = new File(old);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File(old + listOfFiles[i].getName());
f.renameTo(new File(old + "\\" + newpath));
System.out.println(old + "\\" + newpath);
}
}
System.out.println("conversion is done");
} catch (Exception ex) {
Logger.getLogger(CVAdd.class.getName()).log(Level.SEVERE, null, ex);
}
}