讀取位元組流的方法解決

2021-06-20 02:20:41 字數 783 閱讀 3960

如果不知道原檔案的大小,可以這樣:

filestream fs2 = new filestream("2.txt", filemode.create);

byte buffer = new byte[4096];//這裡的大小可以設定為receivebuffersize

while ((count = fs.read(buffer, 0, buffer.length)) != 0)

fs2.close();

——————————————簡單分析一下:

1.buffer長度較小,不會一次從fs中讀取所有資料。那麼在倒數第二次取完byte之後,最後一次可能會出現剩餘的待取位元組不足buffer長度的情況,buffer只有前半部分被更新,後面剩餘了倒數第二次取得的位元組。所以會有冗餘的位元組存在buffer裡面,寫出來的時候相應的冗餘位元組也被存到檔案和richtext裡面了。

2.buffer長度很大,一次能從fs裡取完所有位元組。此時在richetext裡面看到的是正常的。但由於buffer後面還有大量的空餘位元組,而且它們被初始化為「\0」,所以存在txt檔案中會顯示為空格。而且txt的檔案大小也等同於buffer的大小而不是原檔案的大小。

解決辦法:將buffer的大小設為fs位元組流同樣的大小。

即:filestream fs = file.openread("1.txt"); int count = 1; filestream fs2 = new filestream("2.txt", filemode.create); byte buffer = new byte[fs.length];就可以解決上述問題了。

Java中對於位元組流的讀取方式

今天我想介紹一下socket中位元組流的讀取方式,避免在socket讀取過程中發生的斷包問題。1.設計位元組傳送的方式 在位元組流的讀寫過程中,需要先傳送乙個代表傳送內容長度的位元組,然後再傳送內容,在接收端先接受傳送端傳送的內容長度,再根據長度來讀取相應的內容。2.構建位元組流的讀寫類 buffe...

Java使用位元組流讀取資料

輸入流 public static void main string args catch filenotfoundexception e catch ioexception e 輸出流 public static void main string args catch filenotfoundex...

Java中讀取位元組流並按指定編碼轉換成字串的方法

該方法中使用乙個無限迴圈,從位元組流中讀取位元組,存放到byte陣列中,每次讀取1024個位元組 一般都是這個設定 由於每次讀取的位元組數量不一定夠1024個 比如最後一次的讀取就可能不夠 所以我們要記錄每次實際讀到的位元組數,然後將實際讀取到的位元組按指定的編碼方式轉換成字串。private st...