java對(duì)同一個(gè)文件進(jìn)行讀寫(xiě)操作方法
同一個(gè)文件是不可以進(jìn)行同時(shí)的讀寫(xiě)的,因?yàn)槲覀儗?xiě)入文件會(huì)覆蓋原文件的,如果這樣,對(duì)于同一文件來(lái)來(lái)說(shuō),文件發(fā)生覆蓋,無(wú)法進(jìn)行下次讀取
當(dāng)然,對(duì)于兩個(gè)不同的文件,可以一邊讀一邊寫(xiě)的操作
題目:一個(gè)文本中存儲(chǔ)26個(gè)無(wú)序字母,要求對(duì)字母排序后重新寫(xiě)入該文件中
分析:可以在內(nèi)存中用一定的形式存儲(chǔ)讀入的文件內(nèi)容,然后進(jìn)行寫(xiě)入,分開(kāi)操作。
1.用集合存儲(chǔ)讀入的文件
public static void fileRevise(File file) throws IOException {
Reader reader=new BufferedReader(new FileReader(file));
//讀取的數(shù)據(jù)用內(nèi)存為中介,存取,如建立一個(gè)集合
int len;
char[] charArray=new char[1024];
//集合用于儲(chǔ)存讀取的數(shù)據(jù)
List<Character> list=new ArrayList<>();//char 類型的集合,儲(chǔ)存char[]讀取的數(shù)據(jù)
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);
//關(guān)閉流
reader.close();
write.close();
}
2.用字符串存儲(chǔ),BufferReader中特有的readLine()方法可以一次讀取一行
//用字符緩沖流的方法readline()讀取,用字符串緩存,將字符串轉(zhuǎn)為字符數(shù)組重新寫(xiě)入
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();
}
以上就是本次給大家介紹的全部?jī)?nèi)容,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
Intellij IDEA 錄制快捷鍵實(shí)現(xiàn)自動(dòng)格式化的方法
這篇文章主要介紹了Intellij IDEA 錄制快捷鍵實(shí)現(xiàn)自動(dòng)格式化的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
SpringBoot配置HTTPS及開(kāi)發(fā)調(diào)試的操作方法
在實(shí)際開(kāi)發(fā)過(guò)程中,如果后端需要啟用https訪問(wèn),通常項(xiàng)目啟動(dòng)后配置nginx代理再配置https,前端調(diào)用時(shí)高版本的chrome還會(huì)因?yàn)樽C書(shū)未信任導(dǎo)致調(diào)用失敗,通過(guò)摸索整理一套開(kāi)發(fā)調(diào)試下的https方案,下面給大家分享SpringBoot配置HTTPS及開(kāi)發(fā)調(diào)試,感興趣的朋友跟隨小編一起看看吧2024-05-05
詳解Kotlin中如何實(shí)現(xiàn)類似Java或C#中的靜態(tài)方法
Kotlin中如何實(shí)現(xiàn)類似Java或C#中的靜態(tài)方法,本文總結(jié)了幾種方法,分別是:包級(jí)函數(shù)、伴生對(duì)象、擴(kuò)展函數(shù)和對(duì)象聲明。這需要大家根據(jù)不同的情況進(jìn)行選擇。2017-05-05
springboot 接收List 入?yún)⒌膸追N方法
本文主要介紹了springboot 接收List 入?yún)⒌膸追N方法,本文主要介紹了7種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
Java編程中使用JDBC API連接數(shù)據(jù)庫(kù)和創(chuàng)建程序的方法
這篇文章主要介紹了Java編程中使用JDBC API連接數(shù)據(jù)庫(kù)和創(chuàng)建程序的基本教程,JDBC是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn)需要的朋友可以參考下2015-12-12
SpringBoot如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取
這篇文章主要介紹了SpringBoot 如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

