1
/**
2 * @author 最近想跳河
3 * 文件与文件夹的创建、删除、复制
4 */
5 public class FileManager {
6 /**
7 * 创建文件
8 * @param path 文件路径
9 * @return boolean类型
10 */
11 public static boolean crtFile(String path){
12 boolean flag = false; // 参数返回值,局部变量
13 File file = new File(path);
14 if (!file.exists()){
15 try { // 创建一个文件
16 flag = file.createNewFile();
17 } catch (IOException e) {
18 e.printStackTrace();
19 }
20 }
21 return flag;
22 }
23 /**
24 * 创建文件夹
25 * @param path 文件夹路径
26 * @return boolean类型
27 */
28 public static boolean crtFolder(String path){
29 boolean flag = false; // 参数返回值,局部变量
30 File file = new File(path);
31 if (!file.exists()){
32 flag = file.mkdir();
33 }
34 return flag;
35 }
36 /**
37 * 删除文件
38 * @param path 文件路径
39 * @return boolean类型
40 */
41 public static boolean delFile(String path){
42 boolean flag = false; // 参数返回值,局部变量
43 File file = new File(path);
44 if(file.exists()&& file.isFile()){ // 文件且存在
45 flag =file.delete(); // 删除,给局部变量赋值
46 }
47 return flag;
48 }
49 /**
50 * 删除文件夹以及子文件及文件夹 先删除“所有子文件夹”下的文件,最后把这个空文件夹删除
51 * @param path 文件夹路径
52 */
53 public static void delFolder(String path) {
54 File folder = new File(path);
55 if (folder.exists() && folder.isDirectory()) { // 文件夹存在且是文件夹
56 File[] lists = folder.listFiles(); // 取得文件夹下的所有文件与文件夹
57 for ( int i = 0; i < lists.length; i++) {
58 if (lists[i].isFile()) { // 取得所有文件
59 lists[i].delete(); // 删除文件
60 }
61 if (lists[i].isDirectory()) { // 取得所有文件夹
62 delFolder(lists[i].getPath()); // 递归,将所有文件夹下的文件全部删除
63 }
64 }
65 } // 递归循环出来一次,就删除一个文件夹
66 folder.delete(); // 文件夹下的文件全部删除,删除空文件夹
67 }
68
69 /**
70 * 复制文件,此为复制文件的正解。逐个缓存读取源文件,逐个缓存写入目标文件 文件结尾将会返回-1 这种方法可以读取写入的文件大小不受限制
71 * @param sourcePath 源文件路径
72 * @param targetPath 目标文件路径
73 * @throws IOException 抛错
74 */
75 public static void copyFile(String sourcePath, String targetPath)
76 throws IOException {
77 if (!sourcePath.equals(targetPath)) { // 源文件路径和拷贝的目标路径不一致才可以执行
78 File fileSource = new File(sourcePath); // 源文件实例化
79 if (fileSource.exists()) { // 源文件存在
80 if (fileSource.isFile()) { // 判断源文件是否为“文件”
81 File fileTarget = new File(targetPath); // 目标文件实例化
82 InputStream streamIn = new FileInputStream(fileSource); // 输入流,输入对象源文件
83 OutputStream streamOut = new FileOutputStream(fileTarget); // 输出流,输出对象目标文件
84 byte[] buff = new byte[1024]; // 声明1024字节的缓存
85 for ( int i = 0; (i = streamIn.read(buff)) > 0;) { // 逐个缓存读取,再输入流到达结尾时i=-1不满足循环条件
86 streamOut.write(buff); // 逐个缓存写入
87 }
88 streamIn.close(); // 关闭输入流
89 streamOut.close(); // 关闭输出流
90 }
91 }
92 }
93 }
94
95 /**
96 * 复制文件夹
97 * @param source 源文件夹
98 * @throws IOException
99 */
100 public static void copyFolder(String source, String target)
101 throws IOException {
102 if (!source.equals(target)) { // 源文件路径和拷贝的目标路径不一致才可以执行
103 File fileSource = new File(source); // 源文件实例化
104 if (fileSource.exists()) { // 源文件存在
105 if (fileSource.isDirectory()) { // 判断源文件是否为“文件夹”
106 File fileTarget = new File(target);
107 fileTarget.mkdir(); // 创建目标文件夹
108 File[] lists = fileSource.listFiles(); // 取得此文件夹下的所有文件及文件夹
109 for ( int i = 0; i < lists.length; i++) {
110 if (lists[i].isFile()) {
111 // 路径寻找较为周折,源路径不会变化。目标路径=拷贝文件路径+分隔符+源文件名称
112 FileManager.copyFile(lists[i].getPath(),
113 fileTarget.getPath() + File.separatorChar
114 + lists[i].getName());
115 }
116 if (lists[i].isDirectory()) { // 有子文件夹则递归,递归只需要考虑下一个就可以了
117 copyFolder(lists[i].getPath(), target
118 + File.separatorChar + lists[i].getName()); // 递归
119 }
120 }
121 }
122 }
123 }
124 }
125 }
2 * @author 最近想跳河
3 * 文件与文件夹的创建、删除、复制
4 */
5 public class FileManager {
6 /**
7 * 创建文件
8 * @param path 文件路径
9 * @return boolean类型
10 */
11 public static boolean crtFile(String path){
12 boolean flag = false; // 参数返回值,局部变量
13 File file = new File(path);
14 if (!file.exists()){
15 try { // 创建一个文件
16 flag = file.createNewFile();
17 } catch (IOException e) {
18 e.printStackTrace();
19 }
20 }
21 return flag;
22 }
23 /**
24 * 创建文件夹
25 * @param path 文件夹路径
26 * @return boolean类型
27 */
28 public static boolean crtFolder(String path){
29 boolean flag = false; // 参数返回值,局部变量
30 File file = new File(path);
31 if (!file.exists()){
32 flag = file.mkdir();
33 }
34 return flag;
35 }
36 /**
37 * 删除文件
38 * @param path 文件路径
39 * @return boolean类型
40 */
41 public static boolean delFile(String path){
42 boolean flag = false; // 参数返回值,局部变量
43 File file = new File(path);
44 if(file.exists()&& file.isFile()){ // 文件且存在
45 flag =file.delete(); // 删除,给局部变量赋值
46 }
47 return flag;
48 }
49 /**
50 * 删除文件夹以及子文件及文件夹 先删除“所有子文件夹”下的文件,最后把这个空文件夹删除
51 * @param path 文件夹路径
52 */
53 public static void delFolder(String path) {
54 File folder = new File(path);
55 if (folder.exists() && folder.isDirectory()) { // 文件夹存在且是文件夹
56 File[] lists = folder.listFiles(); // 取得文件夹下的所有文件与文件夹
57 for ( int i = 0; i < lists.length; i++) {
58 if (lists[i].isFile()) { // 取得所有文件
59 lists[i].delete(); // 删除文件
60 }
61 if (lists[i].isDirectory()) { // 取得所有文件夹
62 delFolder(lists[i].getPath()); // 递归,将所有文件夹下的文件全部删除
63 }
64 }
65 } // 递归循环出来一次,就删除一个文件夹
66 folder.delete(); // 文件夹下的文件全部删除,删除空文件夹
67 }
68
69 /**
70 * 复制文件,此为复制文件的正解。逐个缓存读取源文件,逐个缓存写入目标文件 文件结尾将会返回-1 这种方法可以读取写入的文件大小不受限制
71 * @param sourcePath 源文件路径
72 * @param targetPath 目标文件路径
73 * @throws IOException 抛错
74 */
75 public static void copyFile(String sourcePath, String targetPath)
76 throws IOException {
77 if (!sourcePath.equals(targetPath)) { // 源文件路径和拷贝的目标路径不一致才可以执行
78 File fileSource = new File(sourcePath); // 源文件实例化
79 if (fileSource.exists()) { // 源文件存在
80 if (fileSource.isFile()) { // 判断源文件是否为“文件”
81 File fileTarget = new File(targetPath); // 目标文件实例化
82 InputStream streamIn = new FileInputStream(fileSource); // 输入流,输入对象源文件
83 OutputStream streamOut = new FileOutputStream(fileTarget); // 输出流,输出对象目标文件
84 byte[] buff = new byte[1024]; // 声明1024字节的缓存
85 for ( int i = 0; (i = streamIn.read(buff)) > 0;) { // 逐个缓存读取,再输入流到达结尾时i=-1不满足循环条件
86 streamOut.write(buff); // 逐个缓存写入
87 }
88 streamIn.close(); // 关闭输入流
89 streamOut.close(); // 关闭输出流
90 }
91 }
92 }
93 }
94
95 /**
96 * 复制文件夹
97 * @param source 源文件夹
98 * @throws IOException
99 */
100 public static void copyFolder(String source, String target)
101 throws IOException {
102 if (!source.equals(target)) { // 源文件路径和拷贝的目标路径不一致才可以执行
103 File fileSource = new File(source); // 源文件实例化
104 if (fileSource.exists()) { // 源文件存在
105 if (fileSource.isDirectory()) { // 判断源文件是否为“文件夹”
106 File fileTarget = new File(target);
107 fileTarget.mkdir(); // 创建目标文件夹
108 File[] lists = fileSource.listFiles(); // 取得此文件夹下的所有文件及文件夹
109 for ( int i = 0; i < lists.length; i++) {
110 if (lists[i].isFile()) {
111 // 路径寻找较为周折,源路径不会变化。目标路径=拷贝文件路径+分隔符+源文件名称
112 FileManager.copyFile(lists[i].getPath(),
113 fileTarget.getPath() + File.separatorChar
114 + lists[i].getName());
115 }
116 if (lists[i].isDirectory()) { // 有子文件夹则递归,递归只需要考虑下一个就可以了
117 copyFolder(lists[i].getPath(), target
118 + File.separatorChar + lists[i].getName()); // 递归
119 }
120 }
121 }
122 }
123 }
124 }
125 }