一 创建文件对象
private static File file = new File("goods.txt");
这里使用private的原因是这里位于我自己写的类中,是为了保护它不会被外界改变。
这样,我们就创建好了一个文件对象file。
二 对文件进行读取以及修改
目录
try(FileReader fr=new FileReader(file);
BufferedReader br = new BufferedReader(fr);
FileWriter fw=new FileWriter(file,true);
BufferedWriter sbr=new BufferedWriter(fw);) {
String line;
while((line=br.readLine())!=null){
if(_count==count){
line="";
sbr.append(line);
}
else sbr.append(line+'\n');
_count++;
}
try( FileWriter fw1 = new FileWriter(file);){
}catch (IOException e){
e.printStackTrace();
}
}catch (IOException e){
e.printStackTrace();
}
这块代码位于一个方法内部,其中有些量是传进来的参数。
这里我遇到了一些问题。
在使用完BufferedWriter的追加之后,没有将原文件清空,导致自己对文件修改之后文件中会同时出现修改前和修改后的内容。
我这里修改的原理其实很简单。
就是单纯将文件中的内容一行一行读出来,然后存储到缓冲区中去。也就是追加append进去。
在读取的过程中可以对读取出的内容进行判断,如果是自己要修改或删除的内容便修改之后再追加到缓冲区内。修改和删除其实是没什么差别的,修改就是用实体内容替代原有内容,而修改则是用空字符代替进去。
记住,空字符不是空格字符,而是双引号里什么也不加!就是 "" 这样。
还有追加时记得在每一行后添加换行符,这样才能是修改后的内容有多行,否则就连在一起了哦。
清除原文件中的内容有很多种,我这里就直接用FileWrite了。
FileWriter fw=new FileWriter(file);
在FileWrite里面的参数里面少传个true就行了,当然也可以传false。这样他就会直接替换整个文件内容,而不是追加新的内容。
我新写了一篇更详细的IO流博客大家可以去看看