Java使用BufferedInputStream和BufferedOutputStream類進行文件(音樂)複製
BufferedInputStream 爲另一個輸入流添加一些功能,即緩衝輸入以及支持 mark 和 reset 方法的能力。在創建 BufferedInputStream 時,會創建一個內部緩衝區數組。在讀取或跳過流中的字節時,可根據需要從包含的輸入流再次填充該內部緩衝區,一次填充多個字節。mark 操作記錄輸入流中的某個點,reset 操作使得在從包含的輸入流中獲取新字節之前,再次讀取自最後一次 mark 操作後讀取的所有字節。
BufferedOutputStream該類實現緩衝的輸出流。通過設置這種輸出流,應用程序就可以將各個字節寫入底層輸出流中,而不必針對每次字節寫入調用底層系統。
將某個文件複製到另一個地方的實現:
複製前的截圖:D盤下有一首歌曲
現在我們將它複製到想複製的位置:比如:D:\copyMusic 下
代碼如下:
public class IOTest {
public static void main(String[] args) throws IOException {
//使用buffer進行文件讀寫
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(new File("D:\\BIGBANG - IF YOU (Live).mp3")));
File newFile = new File("D:\\copyMusic\\BIGBANG - IF YOU (Live).mp3");
newFile.createNewFile();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bytes= new byte[1024];
int length = 0;
while ((length=bufferedInputStream.read(bytes))!=-1){
bufferedOutputStream.write(bytes,0,length);
}
}
}
運行前D盤下copyMusic文件夾結果截圖,此時沒有運行程序所以爲空:
運行後截圖,複製成功: