本文目錄一覽:
java文件讀寫,在一個已經有內容的文件中,追加第一行,如何做到?
我的想法是可以用RandomAccessFile,這個類的seek方法,想在文件的哪個位置插入內容都行。所以你的第一行就不在話下了。但是,這個會覆蓋你文件中插入位置後面的內容。相當於我們在輸入的時候,按了鍵盤的insert鍵盤。所以,像你這種情況只能用臨時文件來存儲原有的內容,然後把要插入的數據寫入文件,再把臨時文件的內容追加到文件中。\x0d\x0avoid insert(String filename,int pos,String insertContent){//pos是插入的位置\x0d\x0a File tmp = File.createTempFile(“tmp”,null);\x0d\x0a tmp.deleteOnExit();\x0d\x0a try{\x0d\x0a RandomAccessFile raf = new RandomAccessFile(filename,”rw”);\x0d\x0a FileOutputStream tmpOut = new FileOutputStream(tmp);\x0d\x0a FileInputStream tmpIn = new FileInputStream(tmp);\x0d\x0a raf.seek(pos);//首先的話是0\x0d\x0a byte[] buf = new byte[64];\x0d\x0a int hasRead = 0;\x0d\x0a while((hasRead = raf.read(buf))0){\x0d\x0a //把原有內容讀入臨時文件\x0d\x0a tmpOut.write(buf,0,hasRead);\x0d\x0a \x0d\x0a }\x0d\x0a raf.seek(pos);\x0d\x0a raf.write(insertContent.getBytes());\x0d\x0a //追加臨時文件的內容\x0d\x0a while((hasRead = tmpIn.read(buf))0){\x0d\x0a raf.write(buf,0,hasRead);\x0d\x0a }\x0d\x0a }\x0d\x0a}
java 如何向txt文件中的某一行繼續寫入
Java的RandomAccessFile提供對文件的讀寫功能,與普通的輸入輸出流不一樣的是RamdomAccessFile可以任意的訪問文件的任何地方。這就是「Random」的意義所在。
相關API:
RandomAccessFile(String
name, String
mode)構造器,模式分為r(只讀),rw(讀寫)等
RandomAccessFile.readLine()方法實現對一整行的讀取,並重新定位操作位置
RandomAccessFile.write(byte[] b)用於位元組內容的寫入
示例如下:
RandomAccessFile raf = new RandomAccessFile(“f:/1.txt”, “rw”);
int targetLineNum = 10;
int currentLineNum = 0;
while(raf.readLine() != null){
if(currentLineNum == targetLineNum){ // 定位到目標行時結束
break;
}
currentLineNum++;
}
raf.write(“\r\ninsert”.getBytes());
raf.close();
java文件讀寫 在一個已經有內容的文件中追加第一行 如何做到
如果要在已有內容的文件開頭插入內容就只能先把原內容讀出來,然後先寫入要插入的東西,然後再把原內容寫回去,然後關閉輸出流
如果要在已有內容的文件末尾追加內容就比較簡單了
在創建FileOutputStream對象的時候第二個參數給個true,就表示續寫文件,而非覆蓋文件已有內容了
new FileOutputStream(file, true)
原創文章,作者:UPWS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141601.html