亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

老師好,我用這個方法復制數據,復制后的文件總要比原文件大幾十字節是為什么?

老師好,我用這個方法復制數據,復制后的文件總要比原文件大幾十字節是為什么?

吃雞游戲 2018-12-06 19:40:01
public static void copyDate(File srcFile,File destFile){ try{ FileInputStream reader=new FileInputStream(srcFile); FileOutputStream writer=new FileOutputStream(destFile); ? int length=0; ? byte[] dataBytes=new byte[4096];//這個數改成128也一樣,速度慢了很多 while((length=reader.read(dataBytes))!=-1){ ? writer.write(dataBytes); } ? reader.close(); writer.close(); ?
查看完整描述

6 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

因為你寫入的字節比實際要多。

問題在這:

byte[] dataBytes=new byte[4096];//這個數改成128也一樣,速度慢了很多

在最后一次的讀取字節時,原有的字節數組要小于4096,你再考慮一下。

查看完整回答
反對 回復 2018-12-16
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

老師我問的是JAVA

查看完整回答
反對 回復 2018-12-16
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

@小張學代碼: 不好意思,看錯了

查看完整回答
反對 回復 2018-12-16
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

byte[] dataBytes=new byte[4096];//這個數改成1試試

查看完整回答
反對 回復 2018-12-16
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

在操作系統中內存空間是按塊區分的,一個塊應該是2K,有的是4K,所以占用空間肯定是塊的整數倍,但是實際的使用空間是根據數據大小來計算的,所以你去讀的時候是大小byte[4096]。所以是一次讀4K,最后一次雖然沒4K,但是也拿了4K的東西(雖然后面是空的,),所以實際空間和原來的不一樣。

查看完整回答
反對 回復 2018-12-16
  • 6 回答
  • 0 關注
  • 696 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號