同一个文件是不可以进行同时的读写的,因为我们写入文件会覆盖原文件的,如果这样,对于同一文件来来说,文件发生覆盖,无法进行下次读取

当然,对于两个不同的文件,可以一边读一边写的操作

题目:一个文本中存储26个无序字母,要求对字母排序后重新写入该文件中

分析:可以在内存中用一定的形式存储读入的文件内容,然后进行写入,分开操作。

1.用集合存储读入的文件

  public static void fileRevise(File file) throws IOException {
Reader reader=new BufferedReader(new FileReader(file));
//读取的数据用内存为中介,存取,如建立一个集合
int len;
char[] charArray=new char[1024];
//集合用于储存读取的数据
List<Character> list=new ArrayList<>();//char 类型的集合,储存char[]读取的数据
while ((len=reader.read(charArray))!=-1){
for (int i = 0; i <len ; i++) {
list.add(charArray[i]);//char->string
}
}
char[] newArray=new char[list.size()];
for (int i = 0; i <list.size() ; i++) {
newArray[i]=list.get(i);
}
Arrays.sort(newArray);
Writer write=new BufferedWriter(new FileWriter(file));
write.write(newArray);
//关闭流 reader.close();
write.close();
}

2.用字符串存储,BufferReader中特有的readLine()方法可以一次读取一行

  //用字符缓冲流的方法readline()读取,用字符串缓存,将字符串转为字符数组重新写入
public static void fileRevise2(File file) throws IOException {
Reader reader=new BufferedReader(new FileReader(file));
StringBuilder sb=new StringBuilder();
String str;
while ((str=((BufferedReader) reader).readLine())!=null){
sb.append(str);
}
System.out.print(sb);
char[] cArray=sb.toString().toCharArray();//
Arrays.sort(cArray);
reader.close();
Writer write=new BufferedWriter(new FileWriter(file));
write.write(cArray);
write.close();
}

java 对同一个文件进行读写操作的更多相关文章

  1. 用Java对CSV文件进行读写操作

    需要jar包:javacsv-2.0.jar 读操作 // 读取csv文件的内容 public static ArrayList<String> readCsv(String filepa ...

  2. java文件的读写操作

    java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...

  3. java 文件的读写操作

    java  文件的读写操作 一.读: public String getSetting() { HttpServletRequest request=org.apache.struts2.Servle ...

  4. Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)

    日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...

  5. C++学习48 对ASCII文件的读写操作

    如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...

  6. android报错及解决2--Sdcard进行文件的读写操作报的异常

    报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...

  7. 使用字符流(Writer、Reader)完成对文件的读写操作

    字符流 字符输出流:Writer,对文件的操作使用子类FileWriter 字符输入流:Reader,对文件的操作使用子类FileReader 每次操作的是一个字符 文件字符操作流会自带缓存,默认大小 ...

  8. INI 文件的读写操作

    在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...

  9. Android 对 properties文件的读写操作

    -. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...

随机推荐

  1. async-await用法

    转载:https://segmentfault.com/a/1190000011526612?utm_source=tag-newest

  2. python requests + xpath 获取分页详情页数据存入到txt文件中

    直接代码,如有不懂请加群讨论# *-* coding:utf-8 *-* #import jsonimport requestsimport pytesseractimport timeimport ...

  3. Delphi中的日期加减

    var Date: TDateTime;  FormatSettings: TFormatSettings; begin Date := Now;//获取当天时间 ShowMessage(DateTo ...

  4. Linux c codeblock的使用(四):创建自己的静态函数库

    从我之前的博文当中,大家应该大概了解了linux下的函数库究竟是一个什么样的东西.linux下的函数库其实就像windows中的dll文件,里面包含了程序运行所需要的函数. 其实无论是我们使用linu ...

  5. 5ci

  6. [数]昨天欠下的一道立体几何题HDU-4741

    并没有做到这道题,后来听学长说了题意,总之就是立体几何嗯 看了好几份题解,是的我知道是异面线段的距离了,可是看码完全不明orz. 这时候出现了一份清晰易懂甚至给出了公式来源的blog╰(*°▽°*)╯ ...

  7. awk命令总结

    强大的文本处理工具,awk读取文件内容的每一行时,将对比该行是否与给定的模式相匹配,匹配则执行处理过程,否则对该行不处理. 序号 awk功能 例子 1 指定分隔符显示某几列   2 通过正则表达式取出 ...

  8. 洛谷P1993 小K的农场

    思路是差分约束+dfs版SPFA. 首先来思考差分约束的过程,将题目给出的式子进行转化: 农场a比农场b至少多种植了c个单位的作物, SPFA我们考虑跑最短路,那么要让SPFA中满足的式子就是if(d ...

  9. Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt

    高通相关网址:Createpoint: https://createpoint.qti.qualcomm.com(可下载文档,Release Note等)Chipcode: https://chipc ...

  10. jq后加标签的事件(live事件)

    在使用中  live可以对未来元素起作用(比如:js后加的div等)   live在jq1.9以上版本已经废除 原:$('#del').live('click',function(){}) 改:$(' ...