fileinputstream fis = new fileinputstream(file);
byte bytes = new byte[1024 * 2];
int id = fis.read(bytes);
你以為接下來
string str=new string(bytes);
syso....................
這樣只會導致重複元素,因為最後乙個陣列存了少部分讀出來的元素,後面沒有元素了,陣列後部分的元素始終沒有被替換掉,因此和前面重複了
解決辦法 string str = new string(bytes,0,id); id是此次讀取陣列的位元組數 這樣構建響應的偏移量,只輸出該輸出的就行了
在檔案複製的時候還有這個問題,多餘拷貝了很多東西。因為讀的多了嘛,考的自然也多。
用fileoutputstream write方法,傳入偏移量即可
fos.write(bytes, 0, id);
標準輸入流
get 從流中提取字元,包括空格 read 無格式輸入指定位元組數 getline 從流中提取一行字元 ignore 提取並丟棄流中指定字元 peek 返回流中下乙個字元,但不從流中刪除 gcount 統計最後輸入的字元個數 seekg 移動輸入流指標 int get cin.get char rc...
緩衝輸入流
快取輸入流 bufferedinputstream繼承於filterinputstream,提供緩衝輸入流功能。緩衝輸入流相對於普通輸入流的優勢是,它提供了乙個緩衝陣列,每次呼叫read方法的時候,它首先嘗試從緩衝區裡讀取資料,若讀取失敗 緩衝區無可讀資料 則選擇從物理資料來源 譬如檔案 讀取新資料...
輸入流cin的狀態
對於標準輸入流cin,有時該操作會發生錯誤,如 include using namespace std int main 當輸入的不是整形int而是字元時,輸入流就會發生錯誤。乙個輸入流一旦發生錯誤,其後的io操作都會失敗。如上面的程式,當輸入字元後,程式就進入死迴圈狀態。這是因為一旦輸入失敗,會產...