JAVA IO流對檔案內容的修改(以BufferedReader&Writer為例)
# 常見問題如下
xxx.txt檔案中有100個學生,每個學生有3個資訊,分別是姓名、密碼、學院,如下:
張三
123456
計算機工程學院
李四
123123
計算機工程學院
王五
654321
......
......
......
馬六十
123321
計算機工程學院
......
......
......
高一百
321321
計算機工程學學院
此時如果要將馬六十同學的密碼123321更改為123456應該怎麼做呢?
我的方法大致如下:
第一步,找到檔案中馬六十的位置nameAddress
定義查詢方法BufferedReader findNameAddress(String name)
public static BufferedReader findNameAddress(String name)
{
try
{
//定義檔案所處位置
File file = new File("E:\\javadata\\xxx.txt");
//Reader流分配
FileReader fileReader = null;
fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
//定義s接收檔案中每一行的內容
String s = null;
//返回該名字所處位置
while((s = bufferedReader.readLine())!=null)
{
if(name.equals(s))
{
return bufferedReader;
}
}
}
catch (Exception e)
{
// TODO: handle exception
}
return null;
}
第二步,對密碼123321進行修改
// 修改密碼過程整體分為四步:
// 1)將原檔案除與原始密碼不同外重新複製一份新txt檔案
// 2)引入FileWriter流將原檔案覆蓋,置空
// 3)將新txt檔案重新寫入被覆蓋的原檔案中去
// 4)刪除新txt檔案
定義方法ChangePassword(BufferedReader nameAddress,String newPassword,String txtPath)
public static void ChangePassword(BufferedReader nameAddress,String newPassword,String txtPath)
{
//定義一個將要複製原檔案的檔案newxxx.txt
String txtPathChange = "E:\\javadata\\newxxx.txt";
File newxxxFile = new File(txtPathChange);
//定義Writer&Reader流
FileWriter newxxxFW = null;
BufferedWriter newxxxBW = null;
FileReader xxxFR = null;
BufferedReader xxxBR = null;
try
{
//為xxx.txt分配Reader流
xxxFR = new FileReader(txtPath);
xxxBR = new BufferedReader(xxxFR);
//定義everyLine用於讀取檔案中每一行的內容
String everyLine = null;
//nameAddress的下一行內容就是該學生的密碼
String password = nameAddress.readLine();
//建立要複製原檔案xxx.txt的檔案newxxx.txt
if(!newxxxFile.exists()){newxxxFile.createNewFile();}
//為newxxx.txt分配Writer流
newxxxFW = new FileWriter(newxxxFile);
newxxxBW = new BufferedWriter(newxxxFW);
//一直複製原檔案xxx.txt的內容,當到該學生的密碼一行時,將新密碼寫入newxxx.txt檔案
//寫入後,繼續複製原檔案xxx.txt的內容
while((everyLine = xxxBR.readLine())!=null)
{
//當Reader流讀到原密碼時
if(everyLine.equals(password))
{
everyLine = newPassword+"\n";
newxxxBW.write(everyLine);/* 把新密碼寫入到newxxx.txt檔案中去 */
newxxxBW.flush();
}
else
{
everyLine += "\n";
newxxxBW.write(everyLine);
newxxxBW.flush();
}
}
FileWriter cleanFileWriter = null; /* 重新定義檔案,覆蓋原來的學生資訊 */
cleanFileWriter = new FileWriter(txtPath);
//為原檔案xxx.txt分配Writer流
FileWriter xxxFW = new FileWriter(new File(txtPath));
BufferedWriter xxxBW = new BufferedWriter(xxxFW);
//為新檔案newxxx.txt分配Reader流
FileReader newxxxFR = new FileReader(txtPathChange);
BufferedReader newxxxBR = new BufferedReader(newxxxFR);
// 將複製的檔案內容寫入到被清空的原檔案中去
while ((everyLine = newxxxBR.readLine()) != null)
{
everyLine += "\n";
xxxBW.write(everyLine);
xxxBW.flush();
}
xxxFR.close();
xxxFW.close();
xxxBR.close();
xxxBW.close();
newxxxFR.close();
newxxxFW.close();
newxxxBR.close();
newxxxBW.close();
cleanFileWriter.close();
newxxxFile.delete();
}
catch (Exception e)
{
e.printStackTrace();
}
}
我的操作
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入您的名字:");
String name = in.nextLine();
System.out.println("請輸入您的新密碼:");
String newPassword = in.nextLine();
findNameAddress(name);
String adress = "E:\\javadata\\xxx.txt";
ChangePassword(findNameAddress(name),newPassword,adress);
}
相關文章
- java IO流 對檔案操作的程式碼集合Java
- java IO流之檔案切割兩例(含Properties 用法)Java
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- [java IO流]之檔案拷貝Java
- [java IO流]之檔案複製Java
- ftp上直接修改檔案內容FTP
- 如何基於文件的內容實現 AI 對話功能,以 Documate 為例AI
- File類的特點?如何建立File類物件?Java中如何操作檔案內容,什麼是Io流Io流如何讀取和寫入檔案?位元組緩衝流使用原則?物件Java
- 修改所有xml檔案中的某些內容XML
- 一個對檔案內容定位分析修改的問題,謝謝!
- Java對txt檔案內容的增刪該查操作Java
- 檔案內容對比工具
- python中修改檔案行內容Python
- linux-批次修改檔案內容Linux
- IO流的檔案讀寫
- Java IO 流之拷貝(複製)檔案Java
- pdf檔案內容怎麼修改 pdf怎麼免費編輯修改內容
- IO流之 檔案操作字元流字元
- IO流-檔案拷貝
- Java 例項 - 修改檔案最後的修改日期Java
- 修改過的專案內容
- python 檔案操作(二) 替換性修改檔案內容Python
- IO流 檔案字元流FileReader、FlieWriter字元
- 對Java萬用字元的個人理解(以集合為例)Java字元
- Java的IO流Java
- linux 下 對檔案內容的查詢Linux
- [java IO流]之 隨機訪問檔案(RandomAccessFile類)Java隨機randomMac
- 讀取resources中properties檔案內容範例
- python實現修改xml檔案內容詳解PythonXML
- ajax讀取檔案中內容的程式碼例項
- Java 檔案 IO 操作Java
- java -IO流Java
- Java IO流Java
- java - IO流Java
- Java IO流Java
- Java IO: 流Java
- Java——IO流Java
- 以後的內容......