黑马程序员技术交流社区

标题: IO流输入一个文件路径将该文件复制到项目目录下 [打印本页]

作者: xuxu5112    时间: 2015-9-19 00:13
标题: IO流输入一个文件路径将该文件复制到项目目录下
  1. package com.heima.test;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.Scanner;

  8. public class Test3_B {

  9.         /**
  10.          *
  11.          *
  12.          * B.在控制台录入文件的路径,将文件拷贝到当前项目下
  13.          *                 1.调用getFile()方法 得到文件对象
  14.          *                 2.创建标准输入流对象
  15.          *                 3.创建标准输出流对象
  16.          *                 4.while遍历文件 write()写出文件到目标路径   跳出条件为read()返回-1
  17.          *                 5.关流释放资源
  18.          *
  19.          * @throws IOException
  20.          */
  21.         public static void main(String[] args) throws IOException {
  22.                 File file = getFile();                                                                                                                                                //调用getFile()方法得到文件对象
  23.                 FileInputStream fis = new FileInputStream(file);                                                        //创建输入流对象
  24.                 FileOutputStream fos = new FileOutputStream(file.getName());        //创建输出流对象
  25.                
  26.                 byte[] bys = new byte[1024 * 10];                                                                                                                //定义小数组
  27.                
  28.                 int len;
  29.                 while((len = fis.read(bys)) != -1) {                                                                                                                //read(bys)返回值是有效录入长度
  30.                         fos.write(bys,0,len);                                                                                                                                                //写出有效长度个字节
  31.                 }
  32.                
  33.                 fis.close();                                                                                                                                                                                        //关流释放资源
  34.                 fos.close();
  35.                 System.out.println("恭喜复制成功了!");
  36.         }
  37.         /*
  38.          * 定义方法getFile 判断录入的内容是否是文件
  39.          * A.返回值类型File
  40.          * B.参数列表void
  41.          * 1.创建键盘录入对象
  42.          *         2.定义字符串接收录入的内容
  43.          * 3.将录入的路径封装成File对象
  44.          * 4.调用方法 判断录入的内容是否是文件
  45.          *         5.若是文件则 return 该文件对象  若不是则返回相对应的错误
  46.          * */
  47.         public static File getFile() {
  48.                 //1.创建键盘录入对象
  49.                 Scanner sc = new Scanner(System.in);
  50.                 System.out.println("请输入一个文件路径");
  51.                 //2.定义字符串接受录入的内容
  52.                 String line = sc.nextLine();               
  53.                
  54.                 File file = new File(line);                                        //将路径封装成文件对象方便调用方法对其判断
  55.                 while(true) {
  56.                         if(!file.exists()) {
  57.                                 System.out.println("输入的路径不存在,请重新输入!");
  58.                         }else if(file.isDirectory()) {
  59.                                 System.out.println("输入的路径是文件夹,请重新输入!");
  60.                         }else {
  61.                                 return file;
  62.                         }
  63.                 }
  64.         }
  65. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2