Home  >  Article  >  Java  >  How to read and write the same file in java? (code)

How to read and write the same file in java? (code)

不言
不言forward
2018-09-28 13:42:092951browse

The content of this article is about how to read and write the same file in Java? (code), it has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

The same file cannot be read and written at the same time, because when we write the file, the original file will be overwritten. If so, for the same file, the file will be overwritten and cannot be read next time.

Of course, for two different files, you can read and write at the same time

Title: 26 unordered letters are stored in a text, and it is required to sort the letters and then rewrite the file Medium

Analysis: The read file contents can be stored in a certain form in the memory, and then written and operated separately.

1. Use collections to store read files

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. Use string storage. The unique readLine() method in BufferReader can read one line at a time

//用字符缓冲流的方法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();
    }

The above is the detailed content of How to read and write the same file in java? (code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete