我需要删除一个文件,名为:学习.txt ; 另外需要删除另一个文件webKindName.txt中的一行内容“学习”。
我的思路是先将webKindName.txt中除了“学习”这一行外的所有内容输出到一个临时文件“临时.txt”中,删除webKindName.txt,再将这个临时文件名改为webKindName.txt(这样就删除了该文件中的那一行);然后再删除文件“学习.txt”。
代码如下:import java.io.*;
import java.util.*;
public class Remove {
public static void main(String[] args){
try {
String reKind="学习";
File inFile = new File("E:/Websites/webKindName.txt");//需要删除该文件中的某一行
File kindFile=new File("E:/Websites/"+reKind+".txt"); //需要删除的文件
File outFile = new File("E:/Websites/临时.txt"); //这是一个临时文件
BufferedReader br = new BufferedReader(new FileReader(inFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(outFile));
String line1="";
for (String line=br.readLine();
line != null;
line=br.readLine()) {
System.out.println("开始循环!");
if (line.indexOf(reKind) > 0) { //找到这一行,跳过(但这个if总是无法执行)
System.out.println("跳过"+reKind);
continue;
} //这个indexOf就可以判断是否存在特殊字符
line1=line+'\n'; //得到文件中除了要删除的类型名外的每行内容
String seperator=System.getProperty("line.separator");
line1=line1.replace("\n", seperator);//若不这样处理打印出的换行符就是一个黑点
bw.write(line1);
//bw.newLine();
}
br.close();
bw.flush();
bw.close();
if (inFile.delete()&&kindFile.delete()) { //删除 webKindName.txt和对应的网站类型的文件
System.out.println("已经删除一个类型!");
outFile.renameTo(inFile); //把 临时.txt改名为 webKindName.txt
}
System.out.println("Remove a kind!!"); //检验以上程序是否可以执行
} catch (IOException e) {
System.out.println("Erro!!"); //出现错误就提示
}
}
}但现在出现了两个问题:
问题一:同样一个程序,有时候运行后,文件名“webKindName.txt”变成了“临时.txt”,名字并没有复原;有时候正常。
问题二:程序中的for循环中的if(){}总是无法执行,“学习”这一行无法跳过,也就无法删除。System.out.println("跳过"+reKind);这一句是我做的标记,说明这个if总是无法执行。
恳求高手帮我解决这个问题,已经困扰我好几天了,不胜感激!
我的思路是先将webKindName.txt中除了“学习”这一行外的所有内容输出到一个临时文件“临时.txt”中,删除webKindName.txt,再将这个临时文件名改为webKindName.txt(这样就删除了该文件中的那一行);然后再删除文件“学习.txt”。
代码如下:import java.io.*;
import java.util.*;
public class Remove {
public static void main(String[] args){
try {
String reKind="学习";
File inFile = new File("E:/Websites/webKindName.txt");//需要删除该文件中的某一行
File kindFile=new File("E:/Websites/"+reKind+".txt"); //需要删除的文件
File outFile = new File("E:/Websites/临时.txt"); //这是一个临时文件
BufferedReader br = new BufferedReader(new FileReader(inFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(outFile));
String line1="";
for (String line=br.readLine();
line != null;
line=br.readLine()) {
System.out.println("开始循环!");
if (line.indexOf(reKind) > 0) { //找到这一行,跳过(但这个if总是无法执行)
System.out.println("跳过"+reKind);
continue;
} //这个indexOf就可以判断是否存在特殊字符
line1=line+'\n'; //得到文件中除了要删除的类型名外的每行内容
String seperator=System.getProperty("line.separator");
line1=line1.replace("\n", seperator);//若不这样处理打印出的换行符就是一个黑点
bw.write(line1);
//bw.newLine();
}
br.close();
bw.flush();
bw.close();
if (inFile.delete()&&kindFile.delete()) { //删除 webKindName.txt和对应的网站类型的文件
System.out.println("已经删除一个类型!");
outFile.renameTo(inFile); //把 临时.txt改名为 webKindName.txt
}
System.out.println("Remove a kind!!"); //检验以上程序是否可以执行
} catch (IOException e) {
System.out.println("Erro!!"); //出现错误就提示
}
}
}但现在出现了两个问题:
问题一:同样一个程序,有时候运行后,文件名“webKindName.txt”变成了“临时.txt”,名字并没有复原;有时候正常。
问题二:程序中的for循环中的if(){}总是无法执行,“学习”这一行无法跳过,也就无法删除。System.out.println("跳过"+reKind);这一句是我做的标记,说明这个if总是无法执行。
恳求高手帮我解决这个问题,已经困扰我好几天了,不胜感激!
另外改成 !=-1后,我运行你的程序,就没有问题了,没出现变成临时。txt的状况
import java.util.*;
public class TestRmove {
public static void main(String[] args){
try {
String reKind="aa";
File inFile = new File("E:/Websites/webKindName.txt");//需要删除该文件中的某一行
File kindFile=new File("E:/Websites/"+reKind+".txt"); //需要删除的文件
File outFile = new File("E:/Websites/t.txt"); //这是一个临时文件
BufferedReader br = new BufferedReader(new FileReader(inFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(outFile));
String line1="";
for (String line=br.readLine();
line != null;
line=br.readLine()) {
System.out.println("开始循环!");
if (line.indexOf(reKind) == 0) { //找到这一行,跳过(但这个if总是无法执行)
System.out.println("跳过"+reKind);
continue;
} //这个indexOf就可以判断是否存在特殊字符
line1=line+'\n'; //得到文件中除了要删除的类型名外的每行内容
String seperator=System.getProperty("line.separator");
line1=line1.replace("\n", seperator);//若不这样处理打印出的换行符就是一个黑点
bw.write(line1);
//bw.newLine();
}
br.close();
bw.flush();
bw.close();
if (inFile.delete()&&kindFile.delete()) { //删除 webKindName.txt和对应的网站类型的文件
System.out.println("已经删除一个类型!");
outFile.renameTo(inFile); //把 临时.txt改名为 webKindName.txt
}
System.out.println("Remove a kind!!"); //检验以上程序是否可以执行
} catch (IOException e) {
System.out.println("Erro!!"); //出现错误就提示
}
}
}中文有点问题,你该改成aa,我这里测试没问题
编程菜鸟学堂QQ群144648357