我試圖創建一個備份程序來使用。我可以備份小文件,但只要我嘗試備份任何大文件,就會得到ArrayIndexOutOfBoundsException。Java傳輸文件arrayindexoutofboundsexception
FileOutputStream fos = new FileOutputStream(dp.getPath() + ".jbackup");
byte[] buffer = new byte[4096];
int fileSize = (int)f.length();
int read = 0;
int remaining = fileSize;
while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) {
remaining -= read;
fos.write(buffer, 0, read);
}
有什麼建議嗎?
這是功課嗎?如果沒有,你應該使用類似['IOUtils']的庫(https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html)任務。 –
不,但我通常會做所有沒有庫的東西(不包括反射,javassist) –
嗯,我認爲這個問題本身就表明也許你不應該這樣做。看看'IOUtils'中的各種'copy()'方法;你可以在一行中做到這一點,並保證工作。 –