首頁 >Java >java教程 >java如何對同一個檔案進行讀寫操作? (代碼)

java如何對同一個檔案進行讀寫操作? (代碼)

不言
不言轉載
2018-09-28 13:42:092977瀏覽

本篇文章帶給大家的內容是關於java如何對同一個文件進行讀寫操作? (程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

同一個檔案是不可以進行同時的讀寫的,因為我們寫入檔案會覆蓋原始檔案的,如果這樣,對於同一檔案來來說,檔案發生覆蓋,無法進行下次讀取

當然,對於兩個不同的文件,可以一邊讀一邊寫的操作

題目:一個文本中存儲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如何對同一個檔案進行讀寫操作? (代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除