[回到版面]
回應模式
名 稱
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 190996 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

檔名:1553882320183.jpg-(17 KB, 496x280)
17 KB
無題無名19/03/30(六)01:58:40 ID:x9oVh5SENo.13129del
java I/O疑問
File outputfile=new File("E:\\number.txt");      
FileOutputStream fos=newFileOutputStream(outputfile,false);

int randomnum=0;
for(int i=0;i<=5;i++) {
randomnum=(int)(Math.random()*1000)+1;
fos.write(randomnum);
}
fos.close();

為什麼印出來的txt檔內容會是亂碼?
是MS-950跟UTF-8的問題嗎?
無名19/03/30(六)12:02:34 ID:lm0ha/CkNo.13130del
跟編碼無關,因為你這目前只有用到ASCII的字元
問題在於 fos.write(randomnum);
這邊的 write 並非是寫入文字,而是寫入字元的byte
換句話說他把你的 randomnum 當作 byte 來處理了

改成下面的寫法可以直接解決掉這個問題
fos.write(Integer.toString(randomnum).getBytes());
無名19/03/30(六)14:24:42 ID:dEK1/4AsNo.13131del
>>13130
感謝
另外想問
如果fos的append改成false 為什麼不會是下一個數字覆蓋前一個
數字而是繼續在同一行往後寫?
是因為迴圈中fos一直開著的關係嗎?
無名19/03/30(六)15:44:45 ID:tlKvFCzQNo.13132del
>>13131
fos向來都是繼續往後寫
覆蓋前一個這種功能根本沒有人會用到吧...
你要覆蓋的話蓋到變數上面最後再一次輸出不就好了

append指的是
如果那個指定的檔名本來就存在
如果append==false,會把本來的檔案清空、從頭開始寫
如果append==true,會從本來的檔案的尾端接著繼續寫

你可以連續執行這個程式兩三次
然後把append開了再試試看有什麼不一樣


【刪除文章】[]
刪除用密碼: