package m1;
import java.io.*;
import java.util.Scanner;
/**
* 通过流复制文件
*
* @author Yzt
* @version 1.0
* @date 2021/10/26 10:08
*/
public class IO2 {
public static void main(String[] args) {
System.out.println("输入要复制的源文件路径:");
String from = new Scanner(System.in).nextLine();
System.out.println("输入目标文件路径:");
String to = new Scanner(System.in).nextLine();
// f1(from, to);//字符流复制
f2(from, to);//字节流复制
}
private static void f2(String from, String to) {
/**
*字节流复制可以处理图片视频等
*/
InputStream in=null;
OutputStream out=null;
try {
in=new BufferedInputStream(new FileInputStream(from));
out=new BufferedOutputStream(new FileOutputStream(to));
int b;
while ((b=in.read())!=-1){
out.write(b);
}
System.out.println("文件复制成功");
} catch (Exception e) {
System.out.println("文件复制失败");
e.printStackTrace();
}finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void f1(String from, String to) {
/**
* 只能操作文本文档,不能操作图片视频
*/
Reader in = null;
Writer out = null;
try {
//创建流对象
in = new BufferedReader(new FileReader(from));
out = new BufferedWriter(new FileWriter(to));
//进行流操作
int b;
while ((b = in.read()) != -1) {//循环读取文件中的内容
out.write(b);//将读取的数据写入文件
}
System.out.println("文件复制成功");
} catch (Exception e) {
System.out.println("文件复制失败");
e.printStackTrace();
} finally {
/**
*关流是有顺序的,如果是多个流,最后创建的要先关闭
* 各自catch
*/
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
利用IO流进行文件复制
最新推荐文章于 2023-09-23 07:00:00 发布