Java IO技术之字节流复制
package j2se.core.io.buffer.Stream; //包名,若是直接复制得注意包名
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 复制数据!
*/
public class Demo2 {
public static void main(String[] args) {
// 创建源文件地址和目标文件地址
String source = "assert/狠狠.mp3"; //换为自己的路径,这个是相对路径
String desc = "E:/assert/狠狠.mp3"; //这个是绝对路径
// 创建关联类
File sourceFile = new File(source);
File descFile = new File(desc);
// 判断该目录是否存在
if(!descFile.getParentFile().exists()){
descFile.getParentFile().mkdir();
System.out.print("该目录不存在,并且已经创建!");
}else {
System.out.print("该目录已经存在,无需创建!");
}
FileInputStream in = null;
FileOutputStream out = null;
// 创建两个字节流
try {
// 要把FileInputStream提到外面
// FileInputStream in = new FileInputStream(sourceFile);
// FileOutputStream out = new FileOutputStream(descFile);
in = new FileInputStream(sourceFile);
out = new FileOutputStream(descFile);
// 定义容器来装数据
byte[] bytes = new byte[1024];
int len = -1;
System.out.println("复制数据开始...");
// 对数据进行读写
while((len = in.read(bytes, 0, bytes.length)) != -1){
out.write(bytes,0,len);
System.out.println("数据拷贝中...");
}
System.out.println("复制数据结束!");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
in.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
下面还有一种是用了buffer包装流,提高效率,先想想如何实现再看源码!
package j2se.core.io.buffer.Stream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 复制数据!Buffer包装流!
*/
public class Demo3 {
public static void main(String[] args) {
// 创建源文件地址和目标文件地址
String source = "assert/狠狠.mp3";
String desc = "E:/assert/狠狠.mp3";
// 创建关联类
File sourceFile = new File(source);
File descFile = new File(desc);
// 判断该目录是否存在
if(!descFile.getParentFile().exists()){
descFile.getParentFile().mkdir();
System.out.print("该目录不存在,并且已经创建!");
}else {
System.out.print("该目录已经存在,无需创建!");
}
BufferedInputStream in = null;
BufferedOutputStream out = null;
// 创建两个字节流
try {
// 要把FileInputStream提到外面
// FileInputStream in = new FileInputStream(sourceFile);
// FileOutputStream out = new FileOutputStream(descFile);
in = new BufferedInputStream(new FileInputStream(sourceFile)) ;
out = new BufferedOutputStream(new FileOutputStream(descFile)) ;
// 定义容器来装数据
byte[] bytes = new byte[1024];
int len = -1;
System.out.println("复制数据开始...");
// 对数据进行读写
while((len = in.read(bytes, 0, bytes.length)) != -1){
out.write(bytes,0,len);
System.out.println("数据拷贝中...");
}
System.out.println("复制数据结束!");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
in.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

浙公网安备 33010602011771号