zoukankan      html  css  js  c++  java
  • Java学习之IO流二

    1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

     1 /**
     2  * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
     3  * @author vanguard
     4  *
     5  */
     6 public class Demo01 {
     7     public static void main(String[] args) {
     8         //键盘输入两个文件夹路径
     9         Scanner sc = new Scanner(System.in);
    10         System.out.println("请输入源目录:");
    11         String srcPath = sc.next();
    12         System.out.println("请输入目标目录:");
    13         String destPath = sc.next();
    14         File src = new File(srcPath);
    15         File dest = new File(destPath);
    16         try {
    17             copyDir(src, dest);
    18         } catch (FileNotFoundException e) {
    19             System.out.println("源文件不存在");
    20             e.printStackTrace();
    21         } catch (IOException e) {
    22             System.out.println("读取文件失败");
    23             e.printStackTrace();
    24         }
    25         
    26     }
    27     /**
    28      * 复制文件夹
    29      * @param src
    30      * @param dest
    31      * @throws IOException
    32      */
    33     private static void copyDir(File src, File dest) throws IOException {
    34         //遍历源文件夹
    35         for(File file : src.listFiles()) {
    36             //如果是文件夹,调用复制文件夹细节方法
    37             if(file.isDirectory()) {
    38                 copyDirDetail(file, dest);
    39             } else {
    40                 //否则,调用复制文件夹方法
    41                 copyFile(file, new File(dest, file.getName()));
    42             }
    43         }
    44     }
    45     /**
    46      * 复制文件夹细节
    47      * @param src
    48      * @param dest
    49      * @throws IOException
    50      */
    51     private static void copyDirDetail(File src, File dest) throws IOException {
    52             dest = new File(dest, src.getName());
    53             //目标文件夹下创建文件夹
    54             dest.mkdirs();
    55             //遍历文件夹下文件及文件夹
    56             for(File file : src.listFiles()) {
    57                 if(file.isDirectory()) {
    58                     copyDirDetail(file, dest);
    59                 } else {
    60                     copyFile(file, new File(dest, file.getName()));
    61                 }
    62             }
    63     }
    64     
    65     /**
    66      * 复制文件
    67      * @param src
    68      * @param dest
    69      * @throws IOException
    70      */
    71     private static void copyFile(File src, File dest) throws IOException {
    72         //定义字节输入、输出流
    73         FileInputStream fis = new FileInputStream(src);
    74         FileOutputStream fos  = new FileOutputStream(dest);
    75         //定义直接缓冲数组
    76         byte[] buf = new byte[1024];
    77         //定义读取长度
    78         int len = 0;
    79         while(-1 != (len = fis.read(buf))) {
    80             fos.write(buf, 0, len);
    81         }
    82         fos.flush();
    83         
    84         //释放资源
    85         fos.close();
    86         fis.close();
    87     }
    88 }

    2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录

     1 /**
     2  * 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录
     3  * @author vanguard
     4  *
     5  */
     6 public class Demo02 {
     7     public static void main(String[] args) {
     8         File src = new File("d:\TortoiseSVN");
     9         File dest = new File("d:\txt");
    10         //定义文件个数
    11         int count = 0;
    12         try {
    13             count = fileNum(src, dest, count);
    14         } catch (IOException e) {
    15             
    16             e.printStackTrace();
    17         }
    18         System.out.println("txt文件的个数为:" + count);
    19     }
    20     
    21     /**
    22      * 统计指定目录及子目录下所有txt文件的个数
    23      * @param src
    24      * @throws IOException 
    25      */
    26     private static int fileNum(File src, File dest, int count) throws IOException {
    27         //遍历目录下的文件及目录
    28         for(File f : src.listFiles()) {
    29             if(f.isDirectory()) {
    30                 count = fileNum(f, dest, count);
    31             } else {
    32                 //如果是文件,且以.txt结尾,文件个数加1,调用复制文件方法
    33                 if(f.getName().endsWith(".txt")) {
    34                     count++;
    35                     copyFile(f, new File(dest, f.getName()));
    36                 }
    37             }
    38         }
    39         return count;
    40     }
    41 
    42     /**
    43      * 复制文件
    44      * @param src
    45      * @param dest
    46      * @throws IOException
    47      */
    48     private static void copyFile(File src, File dest) throws IOException {
    49         //定义字节输入、输出流
    50         FileInputStream fis = new FileInputStream(src);
    51         FileOutputStream fos  = new FileOutputStream(dest);
    52         //定义直接缓冲数组
    53         byte[] buf = new byte[1024];
    54         //定义读取长度
    55         int len = 0;
    56         while(-1 != (len = fis.read(buf))) {
    57             fos.write(buf, 0, len);
    58         }
    59         fos.flush();
    60         
    61         //释放资源
    62         fos.close();
    63         fis.close();
    64     }
    65 }

    3.键盘输入10个数,放到数组中

    (1)去除该数组中大于10的数
    (2)将该数组中的数字写入到本地文件number.txt中

     1 /**
     2  * 3.键盘输入10个数,放到数组中
     3     (1)去除该数组中大于10的数
     4     (2)将该数组中的数字写入到本地文件number.txt中
     5  * @author vanguard
     6  *
     7  */
     8 public class Demo03 {
     9     public static void main(String[] args) {
    10         int count = 0;
    11         Scanner sc = new Scanner(System.in);
    12         int[] arr = new int[10];
    13         for(int i = 0; i < 10; i++) {
    14             arr[i] = sc.nextInt();
    15             if(arr[i] > 10) {
    16                 count++;
    17             }
    18         }
    19         int[] arr2 = new int[arr.length - count];
    20         count = 0;
    21         //遍历数组,去除大于10的数
    22         for(int i = 0; i < arr.length; i++) {
    23             if(arr[i] < 10) {
    24                 arr2[count++] = arr[i];
    25             }
    26         }
    27         System.out.println(Arrays.toString(arr2));
    28         //向本地文件写入数组中的数组
    29         FileWriter fw = null;
    30         try {
    31             fw = new FileWriter("number.txt");
    32             for(int num : arr2) {
    33                 fw.write(num +"
    ");
    34             }
    35             fw.flush();
    36         } catch (FileNotFoundException e) {
    37             System.out.println("目的目录找不到");
    38             e.printStackTrace();
    39         } catch (IOException e) {
    40             System.out.println("文件写入失败");
    41             e.printStackTrace();
    42         } finally {
    43             try {
    44                 if(fw != null) 
    45                     fw.close();
    46             } catch (IOException e) {
    47                 System.out.println("释放资源失败");
    48                 e.printStackTrace();
    49             }
    50         }
    51     }
    52 }

    4.产生10个1-100的随机数,并放到一个数组中
    (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
    (2)把数组中的数字放到当前文件夹的number.txt文件中

     1 /**
     2  * 4.产生10个1-100的随机数,并放到一个数组中
     3     (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
     4     (2)把数组中的数字放到当前文件夹的number.txt文件中
     5  * @author vanguard
     6  *
     7  */
     8 public class Demo04 {
     9     public static void main(String[] args) {
    10         Random r = new Random();
    11         int[] arr = new int[10];
    12         List<Integer> list = new ArrayList<Integer>();
    13         //产生10个1-100的随机数
    14         for(int i = 0; i < arr.length; i++) {
    15             arr[i] = r.nextInt(101);
    16         }
    17         //遍历数组,将数组中大于等于10的数组放到list集合中
    18         for(int num : arr) {
    19             if(num >= 10) {
    20                 list.add(num);
    21             }
    22         }
    23         //遍历输出list集合中的数组
    24         for(int num : list) {
    25             System.out.print(num + " ");
    26         }
    27         FileWriter fw = null;
    28         try {
    29             fw = new FileWriter("number.txt");
    30             for(int num : arr) {
    31                 fw.write(num +"
    ");
    32             }
    33             fw.flush();
    34         } catch (FileNotFoundException e) {
    35             System.out.println("目的目录找不到");
    36             e.printStackTrace();
    37         } catch (IOException e) {
    38             System.out.println("文件写入失败");
    39             e.printStackTrace();
    40         } finally {
    41             try {
    42                 if(fw != null) 
    43                     fw.close();
    44             } catch (IOException e) {
    45                 System.out.println("释放资源失败");
    46                 e.printStackTrace();
    47             }
    48         }
    49     }
    50 }

    5.从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中

     1 /**
     2  * 5.从控制台获取输入的文件目录然后将该目录(包含子目录)
     3  * 下的.java文件复制到D:/java文件夹中
     4  * @author vanguard
     5  *
     6  */
     7 public class Demo05 {
     8     public static void main(String[] args) {
     9         System.out.println("请输入一个文件目录:");
    10         String srcPath = new Scanner(System.in).next();
    11         String destPath = "d:\Java";
    12         File src = new File(srcPath);
    13         File dest = new File(destPath);
    14         try {
    15             listFile(src, dest);
    16         } catch (IOException e) {
    17             
    18             e.printStackTrace();
    19         }
    20         
    21     }
    22     /**
    23      * 遍历目录下的子目录及文件
    24      * @param src
    25      * @param dest
    26      * @throws IOException
    27      */
    28     private static void listFile(File src, File dest) throws IOException {
    29         //遍历目录下的文件及目录
    30         for(File f : src.listFiles()) {
    31             if(f.isDirectory()) {
    32                 listFile(f, dest);
    33             } else {
    34                 //如果是文件,且以.txt结尾,文件个数加1,调用复制文件方法
    35                 if(f.getName().endsWith(".java")) {
    36                     copyFile(f, new File(dest, f.getName()));
    37                 }
    38             }
    39         }
    40     }
    41     /**
    42      * 复制文件
    43      * @param src
    44      * @param dest
    45      * @throws IOException
    46      */
    47     private static void copyFile(File src, File dest) throws IOException {
    48         //定义字节输入、输出流
    49         FileInputStream fis = new FileInputStream(src);
    50         FileOutputStream fos  = new FileOutputStream(dest);
    51         //定义直接缓冲数组
    52         byte[] buf = new byte[1024];
    53         //定义读取长度
    54         int len = 0;
    55         while(-1 != (len = fis.read(buf))) {
    56             fos.write(buf, 0, len);
    57         }
    58         fos.flush();
    59         
    60         //释放资源
    61         fos.close();
    62         fis.close();
    63     }
    64 }
  • 相关阅读:
    CSS选择器
    CSS框模型
    AJAX
    HTML 表单
    二叉树
    词嵌入、word2vec
    双向、深层循环神经网络
    20201012----每天都在进步吗?
    20201012--环境搭建
    20201011--记录一下
  • 原文地址:https://www.cnblogs.com/guodong-wang/p/7219769.html
Copyright © 2011-2022 走看看