IO流 复制文件及文件夹

  1 package io;
  2
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.io.OutputStream;
  9 import java.util.Scanner;
 10
 11 public class copy {
 12
 13     public static void main(String[] args) {
 14
 15         Scanner sc = new Scanner(System.in);// 键盘输入
 16
 17         System.out.print("请输入需要复制的源:");
 18         String srcPath = sc.next();
 19         System.out.print("请输入需要复制的目的:");
 20         String destPath = sc.next();
 21
 22         System.out.println("复制开始");
 23         copys(srcPath, destPath);
 24         System.out.println("复制结束");
 25
 26     }
 27
 28     /**
 29      * 复制
 30      *
 31      * @param srcPath
 32      *            源
 33      * @param destPath
 34      *            目的
 35      */
 36     private static void copys(String srcPath, String destPath) {
 37
 38         File srcFile = new File(srcPath);
 39
 40         if (srcFile.isDirectory()) {// 判断是否为文件夹
 41
 42             File[] files = srcFile.listFiles();// 获取文件列表,File对象
 43
 44             for (File file : files) {
 45
 46                 String name = File.separator + file.getName();// 获取适合计算机系统的地址分隔符;获取文件名或文件夹名
 47
 48                 if (file.isDirectory()) {// 判断是否为文件夹
 49                     copyDirectory(srcPath + name, destPath + name);
 50                 }
 51
 52                 if (file.isFile()) {// 判断是否为文件
 53                     copyFile(file, srcPath + name, destPath + name);
 54                 }
 55
 56             }
 57
 58         }
 59
 60         if (srcFile.isFile()) {// 判断是否为文件
 61             copyFile(srcFile, srcPath, destPath);
 62         }
 63
 64     }
 65
 66     /**
 67      * 复制文件夹
 68      *
 69      * @param srcPath
 70      *            源
 71      * @param destPath
 72      *            目的
 73      */
 74     private static void copyDirectory(String srcPath, String destPath) {
 75
 76         File destFile = new File(destPath);
 77
 78         if (!destFile.exists()) {// 判断文件或文件夹是否存在
 79             destFile.mkdirs();// 创建目录(包括父目录)
 80         }
 81
 82         copys(srcPath, destPath);
 83
 84     }
 85
 86     /**
 87      * 复制文件
 88      *
 89      * @param file
 90      *            File对象
 91      * @param srcPath
 92      *            源
 93      * @param destPath
 94      *            目的
 95      */
 96     private static void copyFile(File file, String srcPath, String destPath) {
 97
 98         InputStream is = null;
 99         OutputStream os = null;
100
101         File srcFile = new File(srcPath);
102         File destFile = new File(destPath);
103
104         try {
105
106             is = new FileInputStream(srcFile);
107             os = new FileOutputStream(destFile);
108
109             int length = (int) file.length();// 获取文件的字节长度
110             byte[] b = new byte[length];
111
112             is.read(b);
113             os.write(b);
114
115         } catch (IOException e) {
116
117             System.out.println("IO异常, 复制失败");
118             e.printStackTrace();
119
120         } finally {
121
122             try {
123
124                 os.close();
125                 is.close();
126
127             } catch (IOException e) {
128
129                 System.out.println("IO异常, 复制失败");
130                 e.printStackTrace();
131
132             }
133
134         }
135
136     }
137
138 }

原文地址:https://www.cnblogs.com/ybxxszl/p/9314096.html

时间: 2024-10-09 23:29:59

IO流 复制文件及文件夹的相关文章

使用IO流复制文件夹(包括子目录)

IO流用于处理设备上的数据(包括硬盘,内存,键盘录入). IO流可根据流向不同分为输入流和输出流,根据处理数据类型不同分为字节流和字符流. 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流的区别: a.读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节. b.处理对象不同:字节流能处理所有类型的数据(如图片.avi等),而字符流只能处理字符类型的数据. 结论:

IO流 - 复制文件(字节缓冲流+字节流)

一.什么是缓冲流 缓冲流的内部都包含一个缓冲区,通过缓冲区读写,可以提高了IO流的读写速度. 二.缓冲流+字节流复制文件 //明确数据源 FileInputStream fis=new FileInputStream("D:\\java1018\\buffer.txt"); //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\java1018\\a\\buffer2.txt"); //创建缓冲流对象 //输入

java用字符io流复制文件

一.小文件一次快速读写 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Test11 { public static void main(String[] args) throws IOException { //关联

java IO流复制图片

一.使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // String srcPath = "E://11.jpg"; // String destPath = "E://22.jpg"; //(2)通过文件类 File srcPath = new File("E://11.jpg"); File destPat

java-通过IO流复制文件夹到指定目录

public class copyDirectoryDemo { public static void main(String[] args) {        File srcFolder = new File("C:\\Users\\MA\\Desktop\\IOtest");        File destFolder = new File("C:\\Users\\MA\\Desktop\\IOtest\\test");        fun(srcFold

使用IO流实现对特殊文件及文件夹中文件拷贝到指定文件中

本程序可以实现将自己指定的文件类型的文件拷贝到自己想放的文件中,比如一个文件夹中有很多文件,那么我们想把所有的TXT文件拷贝到自己指定的文件中.(靠背笔记) package com.blueZhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

IO流复制文件

1. 经过测试可以复制 txt excel csv exe pdf文件其他格式的没测,估计也没问题 public class Hello { private static final String LINE_SEPARATOR = System.getProperty("line.separator");//换行 public static void main(String[] args) throws Exception { FileInputStream reader = new

Java IO流 之 File 操作文件夹

http://www.verejava.com/?id=17160027381247 import java.io.File; public class Test { public static void main(String[] args) { // File dir=File(String pathname) //即表示文件 又表示目录 File dir=new File("dir2/test"); // boolean mkdir() //创建一个 一级目录 dir.mkdir

IO流 - 复制文件(字符流)

一.单字符复制 //明确数据源 FileReader fr=new FileReader("D:\\java1018\\buffer.txt"); //明确目的地 FileWriter fw=new FileWriter("D:\\java1018\\b\\buffer.txt"); //创建字符缓冲流对象 BufferedReader br=new BufferedReader(fr); BufferedWriter bw=new BufferedWriter(f