一次使用FileOutputStream碰到的坑

2021-10-09 20:29:18 字數 1074 閱讀 3725

一開始的**寫法:

inputstream inputstream = null;

fileoutputstream fileoutputstream = null;

inputstream = response.body().bytestream();

file file = new file(*******);

if(!file.exists())

try inputstream.close();

fileoutputstream.close();

}catch (exception e)finally

if(fileoutputstream != null)

}catch (ioexception ex)

}response.close();

問題就出在while迴圈中fileoutputstream.write(bytes)這:

正確寫法:

//略

int len;

while ((len = inputstream.read(bytes)) != -1)

//略

附:

一開始我還以為是不是因為outputstream沒有呼叫flush()從而造成在while迴圈中寫入了重複的資料,經調查發現outputstream、fileoutputstream的flush()什麼都沒做。相反bufferedoutputstream的flush()會把快取寫入到檔案,部分原始碼如下:

public synchronized void flush() throws ioexception 

/** flush the internal buffer */

private void flushbuffer() throws ioexception

}

寫程式,還是少一點複製貼上,多動手,勤思考

只有一次 只有一次

二十多歲的年紀我累了很久,也在努力的尋找機會向陽而生。十三歲時迫於生活父母把剛上初一的我獨自留在老家,被父母伺候慣的我沒有一點生活常識,不懂得如何把衣服洗淨,不懂得如何生火做飯,不懂得如何花錢,不懂得如何戰勝黑暗和孤獨,每次乙個人回家時都會出現幻聽和幻覺,看著家裡好像有炊煙,聽誰都像媽媽的聲音.好不...

記一次muse ui 使用

vue init webpack test musenpm i muse ui snpm i babel plugin import less less loader d然後,將.babelrc的 plugins 裡面新增一段 裡面的 plugins import 在使用的時候出現過乙個問題,專案本...

第一次使用

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...