iT邦幫忙

0

Java Buffered輸入輸出 結果與我想法不同

  • 分享至 

  • xImage

兩個預備檔案:
st1.txt內容如下
this
is
st1
st2.txt內容如下
i
am
st2

程式碼

import java.io.*;

public class BufferedIODemo {

	public static void main(String[] args) throws IOException{
		BufferdeIO bufferdeIO = new BufferdeIO();
		bufferdeIO.dump(new FileInputStream("st1.txt"),
				new FileOutputStream("st2.txt"));
	}
}

class BufferdeIO{
	public void dump(InputStream src, OutputStream dest) {
		try(InputStream input = new BufferedInputStream(src);
				OutputStream output = new BufferedOutputStream(dest)){
			byte[] data = new byte[1024];
			int length;
			while((length = input.read()) != -1) {
				output.write(data, 0, length);
			}
		}catch(IOException e) {
			System.out.println(e);
		}
	}
}

結果
st1.txt內容如下
this
is
st1
st2.txt內容如下
//空的

我的想法是st2.txt內容應該會和st1.txt內容一樣才對,想問有大神可以解答嗎?

fillano iT邦超人 1 級 ‧ 2017-12-04 10:30:00 檢舉
你沒有東西讀進byte[] data,那怎麼寫進output呢?

另外,input、output用完都要呼叫close()
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
aiden
iT邦新手 5 級 ‧ 2018-02-13 15:42:25

程式碼

import java.io.*;

public class BufferedIODemo {

	public static void main(String[] args) throws IOException{
		BufferdeIO bufferdeIO = new BufferdeIO();
		bufferdeIO.dump(new FileInputStream("st1.txt"),
				new FileOutputStream("st2.txt"));
	}
}

class BufferdeIO{
	public void dump(InputStream src, OutputStream dest) {
		try(InputStream input = new BufferedInputStream(src);
				OutputStream output = new BufferedOutputStream(dest)){
			byte[] data = new byte[1024];
			int length;
            while(input.read(data) != -1) {  //讀進data陣列
                output.write(data);
			}
            output.flush();                  // 將緩衝區中的資料全部寫出 
            input.close();                   // 關閉串流 
            output.close();                  // 關閉串流 
		}catch(IOException e) {
			System.out.println(e);
		}
	}
}

修改部分

https://www.diffnow.com/?report=ynw52

我要發表回答

立即登入回答