就是读取某个文件,然后加上行数,再写回原文件中——原文件:
ajfdpafji
ajfejw
nwoer运行后:
1 ajfdpafji
2 ajfejw
3 nwoer我的想法:我是用个很笨的方法,就是先把处理好的文件备份到一个临时文件,然后再写入原文件覆盖原来的,同时再删除临时文件。问题:1.有没有其他的更好的方法。
2.我的方法中为什么delete()删除失败啊?百思不得其解啊——代码:
public class AddRowNum {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/Hello.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/temp.txt"));
int RowNum = 0;
String s = null;
while ((s = br.readLine()) != null) {
bw.write(((++RowNum) + " " + s));
bw.newLine();
}
bw.flush();
br = new BufferedReader(new FileReader("D:/temp.txt"));
bw = new BufferedWriter(new FileWriter("D:/Hello.txt"));
s = null;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();
};
bw.flush();
br.close();
bw.close();
} catch(FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch(IOException e) {
System.out.println("文件读取错误");
}
(new File("D:/temp.txt")).delete();
}
}
ajfdpafji
ajfejw
nwoer运行后:
1 ajfdpafji
2 ajfejw
3 nwoer我的想法:我是用个很笨的方法,就是先把处理好的文件备份到一个临时文件,然后再写入原文件覆盖原来的,同时再删除临时文件。问题:1.有没有其他的更好的方法。
2.我的方法中为什么delete()删除失败啊?百思不得其解啊——代码:
public class AddRowNum {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/Hello.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/temp.txt"));
int RowNum = 0;
String s = null;
while ((s = br.readLine()) != null) {
bw.write(((++RowNum) + " " + s));
bw.newLine();
}
bw.flush();
br = new BufferedReader(new FileReader("D:/temp.txt"));
bw = new BufferedWriter(new FileWriter("D:/Hello.txt"));
s = null;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();
};
bw.flush();
br.close();
bw.close();
} catch(FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch(IOException e) {
System.out.println("文件读取错误");
}
(new File("D:/temp.txt")).delete();
}
}
不过你的这个 好像没贴出来delete()代码吧 不贴出来怎么知道那里出错了呢
处理存内存,用HashMap吧,Integer 做key 行内容做 value,最后遍历写出,从1到map.size()2.第一次
bw.flush()之后,应该把两个流close了,然后br和bw再赋予新的
即
while ((s = br.readLine()) != null) {
bw.write(((++RowNum) + " " + s));
bw.newLine();
}
bw.flush();
补上:
br.close();
bw.close();否则虽然你br,bw赋予了新的,但是原来两个流还开着....经试验加上这个能搞定
try {
BufferedReader br = new BufferedReader(new FileReader("D:/Hello.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/temp.txt"));
int RowNum = 0;
String s = null;
while ((s = br.readLine()) != null) {
bw.write(((++RowNum) + " " + s));
bw.newLine();
}
bw.flush();
br.close();
bw.close();
br = new BufferedReader(new FileReader("D:/temp.txt"));
bw = new BufferedWriter(new FileWriter("D:/Hello.txt"));
s = null;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();
};
bw.flush();
br.close();
bw.close();
} catch(FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch(IOException e) {
System.out.println("文件读取错误");
}
try{
System.out.println("Here");
if((new File("D:/temp.txt")).delete())
System.out.println("success");
else
System.out.println("fail");
}catch(SecurityException e){System.out.println("无法删除");}