【Java习题】上一题的优化

题目见上一篇博客

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import org.junit.Test;
public class IO {
 /**
  * 实现文件复制
  * @throws IOException
  */
 @Test
 public void test1() throws IOException{
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入您要复制的文件所在的全路径:");
  String filePath = scanner.next();
  System.out.println("请输入您要复制到的目标路径:");
  String targetPath = scanner.next();
  File f = new File(filePath);//源文件对象
  File target = null;//目标文件对象
  if(targetPath.endsWith("\\")||targetPath.endsWith("/")){
   target = new File(targetPath+"copy_"+f.getName());
  }else{
   target = new File(targetPath+File.separator+"copy_"+f.getName());
  }
  if(target!=null&&target.exists()){
   target.delete();
  }
  //判断文件是否存在
  if(!f.exists()){
   System.out.println("对不起,您要复制的文件不存在!");
   return;
  }
  //判断文件的类型
  if(f.getName().endsWith(".txt")){
   //使用字符流复制
   BufferedReader br = new BufferedReader(new FileReader(f));
   BufferedWriter bw = new BufferedWriter(new FileWriter(target));
   char []  buff = new char[1024];
   int len=0 ;
   while((len = br.read(buff))!=-1){
    bw.write(buff,0,len);
   }
   bw.close();
   br.close();
   System.out.println("文件复制完成!复制的文件绝对路径为:"+target.getAbsolutePath());
   
   
   
  }else{
   //使用字节流复制
   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));
   byte [] buff = new byte[1024];
   int len =0;
   while((len = bis.read(buff))!=-1){
    bos.write(buff, 0, len);
   }
   bos.close();
   bis.close();
   System.out.println("文件复制完成!复制的文件绝对路径为:"+target.getAbsolutePath());
  }
 } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值