日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java全写_Java 写文件

發布時間:2025/3/21 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java全写_Java 写文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此次測試OutputStream都是使用FileOutputStream。

FileOutputStream用于向文件寫入文件。實現方式:

FileOutputStream buffer = null;try{

buffer= newFileOutputStream(file);byte[] n = "\n".getBytes();for (int i = 0; i < maxIndex; i++) {

buffer.write(line.generateLineMsg().getBytes());//隨機產生一行數據

buffer.write(n);//if (i % 10== 0) {//buffer.flush();//}

}

buffer.flush();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(buffer);

}

OutputStreamWriter:專門用于處理文件的字符寫入流對象。實現方式:

OutputStreamWriter writer = null;try{

writer= new OutputStreamWriter(newFileOutputStream(file));for(int i = 0;i < maxIndex;i++) {

writer.write(line.generateLineMsg());

writer.write("\n");//if(i % 10 == 0) {//writer.flush();//}

}

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(writer);

}

FileWriter:OutputStreamWriter的子類,在構造函數中,創建一個FileOutputStream初始化數據,其余和OutputStreamWriter相同;實現方式

FileWriter writer = null;try{

writer= newFileWriter(file);for(int i = 0;i < maxIndex;i++) {

writer.write(line.generateLineMsg());

writer.write("\n");//if(i % 10 == 0) {//writer.flush();//}

}

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(writer);

}

BufferedWriter:存儲一個char數組(默認值是8192),用于緩存數據,需要一個Writer來寫數據,如BufferedWriter和FileWriter;

對于write(int paramInt),判斷當前存儲是否超過了緩存最大值,如果超過,則將緩存寫入到writer中;否則將數據添加到緩存中;

以下paramInt1 代表起始位置,paramInt2代表結束位置

對于write(char[] paramArrayOfChar, int paramInt1, int paramInt2)

如果paramInt2大于緩存大小(nChars值),即刻將緩存寫入到writer中,然后將paramArrayOfChar寫入writer中;否則將paramArrayOfChar從paramInt1到paramInt2寫入到緩存中,一旦緩存滿了,則寫入到writer里。

對于write(String paramString, int paramInt1, int paramInt2)

paramString從paramInt1到paramInt2寫入到緩存中,一旦緩存滿了,則寫入到writer里。

實現方式:

BufferedWriter buffer = null;try{

buffer= new BufferedWriter(new FileWriter(file),8192000);for(int i = 0;i < maxIndex;i++) {

buffer.write(line.generateLineMsg());

buffer.newLine();//if(i % 10 == 0) {//buffer.flush();//}

}

buffer.flush();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(buffer);

}

FilterOutputStream 需要一個OutputStream來寫數據,如FileOutputStream,但是filterOutStream write(byte[] paramArrayOfByte, int paramInt1,int paramInt2)?是將byte數組一個個寫入到OutputStream中。

FilterOutputStream buffer = null;try{

buffer= new FilterOutputStream(newFileOutputStream(file));byte[] n = "\n".getBytes();for (int i = 0; i < maxIndex; i++) {

buffer.write(line.generateLineMsg().getBytes());

buffer.write(n);//if (i % 100 == 0) {//buffer.flush();//}

}

buffer.flush();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(buffer);

}

BufferedOutputStream :是FilterOutputStream的子類,存儲一個byte數組(默認值是8192),用于緩存數據,需要一個OutputStream來寫數據,如FileOutputStream,

write(byte[] paramArrayOfByte, int paramInt1,int paramInt2) ?1.如果paramInt2大于緩存最大數(byte數組大小),將緩存數據寫入到流中,然后再將數據寫入到流中;在1不成立的情況下,如果paramInt2大于緩存剩余的大小(即還沒被寫的byte),清空緩存;不管2是否成立,最后都會將數據寫入到緩存中。

實現方式:

BufferedOutputStream buffer = null;try{

buffer= new BufferedOutputStream(new FileOutputStream(file),8192000);byte[] n = "\n".getBytes();for (int i = 0; i < maxIndex; i++) {

buffer.write(line.generateLineMsg().getBytes());

buffer.write(n);//if (i % 10 == 0) {//buffer.flush();//}

}

buffer.flush();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(buffer);

}

NIO : java1.4開始發布,非阻塞式IO,實現方式:

FileChannel chanel = null;

FileOutputStream outputStream= null;try{

outputStream= newFileOutputStream(file);

chanel=outputStream.getChannel();

ByteBuffer buffer=ByteBuffer.allocateDirect(BUFSIZE);byte[] n = "\n".getBytes();for(int i = 0;i < maxIndex;i++) {

buffer.put(line.generateLineMsg().getBytes()); //隨機產生一行數據

buffer.put(n);if(i % 50000 == 0) {

buffer.flip();

chanel.write(buffer);

buffer.clear();

}

}

buffer.flip();

chanel.write(buffer);

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

FileUtil.closeWriter(outputStream);

FileUtil.closeWriter(chanel);

}

要想NIO能快速寫文件,Buffer大小需要配置好,大點速度快點。

通過讓FileOutputStream,OutputStreamWriter,FileWriter,BufferedWriter,FilterOutputStream,BufferedOutputStream 寫1G文件的對比,

因為有緩存原因(緩存設置好點),BufferedWriter和BufferedOutputStream NIO 速度差不多且是最快的,只是BufferedOutputStream 要將String轉換成byte數組,如果純粹生成一行數據能用byte存儲,則BufferedOutputStream 速度很好,只是一行byte數組數據不好寫。

FilterOutputStream速度最慢,主要是一個個byte寫入流中。

部分函數說明

1,write(ch): 將一個字符寫入到流中。

2,write(char[]): 將一個字符數組寫入到流中。

3,write(String): 將一個字符串寫入到流中。

4,flush():刷新流,將流中的數據刷新到目的地中,流還存在。

5,close():關閉資源:在關閉前會先調用flush(),刷新流中的數據去目的地。然流關閉。

關于寫文件編碼格式:

對于OutputStreamWriter可以指定文件編碼格式保存數據。

對于FileWriter、FileOutputStream、BufferedWriter、FilterOutputStream、BufferedOutputStream沒有提供寫文件編碼設置,則根據Charset.defaultCharset().name()這個返回的編碼保存數據。

總結

以上是生活随笔為你收集整理的java全写_Java 写文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。