A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-9-8 16:03  /  231 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

s
  1. /**
  2. * 需求:复制文本文件
  3. * 分析:        1 文本属于字符流
  4. *                         2 需要给出源文本文件,和目标文件
  5. */

  6. package test;

  7. import java.io.BufferedReader;
  8. import java.io.BufferedWriter;
  9. import java.io.File;
  10. import java.io.FileReader;
  11. import java.io.FileWriter;
  12. import java.io.IOException;
  13. import java.util.Scanner;

  14. public class TxtCopy {

  15.         public static void main(String[] args) {
  16.                 // TODO Auto-generated method stub
  17.                 System.out.println("请输入源文件的完整路径:");
  18.                 String srcPath = new Scanner(System.in).nextLine();
  19.                 System.out.println("请输入目标文件的完整路径:");
  20.                 String desPath = new Scanner(System.in).nextLine();
  21.                 try{
  22. //                        copy1(srcPath,desPath);
  23.                         copy2(srcPath,desPath);
  24.                        
  25.                 }catch(IOException e){
  26.                         e.printStackTrace();
  27.                 }
  28.         }

  29.         private static void copy2(String srcPath, String desPath) throws IOException {
  30.                 // TODO Auto-generated method stub
  31.                 File srcfile = new File(srcPath);
  32.                 if(!srcfile.exists()){
  33.                         System.out.println("输入源文件地址错误,找不到文件!!");
  34.                         return ;
  35.                 }
  36.                 BufferedReader fr = new BufferedReader(new FileReader(srcfile));
  37.                 //建立目标文件,并检测是否存在,若存在 提示覆盖还是合并
  38.                 File desfile = new File(desPath);
  39.                 String flag1 = null;//记录覆盖操作的选择
  40.                 int flag = -1;
  41.                 if(desfile.exists()){
  42.                         System.out.println("文件已存在,是否进行合并? 0:否  1 是");
  43.                         flag1 = new Scanner(System.in).nextLine();
  44.                         flag = Integer.parseInt(flag1);
  45.                 }
  46.                 BufferedWriter fw = null;
  47.                 switch(flag){
  48.                         case 0:
  49.                                 fw = new BufferedWriter(new FileWriter(desPath));
  50.                                 break;
  51.                         case 1:
  52.                                 fw = new BufferedWriter(new FileWriter(desPath,true));
  53.                                 break;
  54.                         default:
  55.                 }
  56.                 String line = null;
  57.                 while((line = fr.readLine())!=null){
  58.                         fw.write(line);
  59.                         fw.newLine();
  60.                         fw.flush();
  61.                 }
  62.                 fr.close();
  63.                 fw.close();
  64.                 System.out.println("copy done!");
  65.         }

  66.         private static void copy1(String srcPath, String desPath)
  67.                         throws IOException {
  68.                 // TODO Auto-generated method stub
  69.                 //建立抽象源文件和目标文件
  70.                 File srcfile = new File(srcPath);
  71.                 if(!srcfile.exists()){
  72.                         System.out.println("输入源文件地址错误,找不到文件!!");
  73.                         return ;
  74.                 }
  75.                 FileReader fr = new FileReader(srcfile);
  76.                 //建立目标文件,并检测是否存在,若存在 提示覆盖还是合并
  77.                 File desfile = new File(desPath);
  78.                 String flag1 = null;//记录覆盖操作的选择
  79.                 int flag = -1;
  80.                 if(desfile.exists()){
  81.                         System.out.println("文件已存在,是否进行合并? 0:否  1 是");
  82.                         flag1 = new Scanner(System.in).nextLine();
  83.                         flag = Integer.parseInt(flag1);
  84.                 }
  85.                 FileWriter fw = null;
  86.                 switch(flag){
  87.                         case 0:
  88.                                 System.out.println("请重新输入名字:");
  89.                                 desPath = new Scanner(System.in).nextLine();
  90.                                 fw = new FileWriter(desPath);
  91.                                 break;
  92.                         case 1:
  93.                                 fw = new FileWriter(desPath,true);
  94.                                 break;
  95.                         default:
  96.                                 fw = new FileWriter(desPath,true);
  97.                 }
  98.                 int by = 0;
  99.                 while((by = fr.read())!= -1){
  100.                         fw.write(by);
  101.                 }
  102.                 //关闭资源
  103.                 fr.close();
  104.                 fw.close();
  105.                 System.out.println("copy done!!");
  106.         }

  107. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马