文件拷贝
1
//
文件拷贝
2 import java.io. * ;
3 import java.util.ArrayList;
4 import java.util.List;
5 public class FileCopy {
6private String message = "";
7public String getMessage() {
8 return message;
9}
10public void setMessage(String message) {
11 this.message = message;
12}
13/** *//**
14 * 将源文件拷贝到目标文件
15 *
16 * @param src
17 * 写源文件地址,需文件名
18 * @param des
19 * 写目标文件地址,无需文件名
20 */
21public boolean copyFile(String src, String des) {
22 File srcFile = new File(src);
23 File desDir = new File(des);
24 File desFile = new File(des + "/" + srcFile.getName());
25 // 判断源文件是否存在
26 if (!srcFile.exists()) {
27 this.setMessage("源文件不存在!");
28 return false;
29 } else if (!srcFile.isFile()) {
30 this.setMessage("源文件格式错!");
31 return false;
32 }
33 // 判断源文件是否存在
34 if (!desDir.exists()) {
35 this.setMessage("目标目录不存在!");
36 return false;
37 } else if (!desDir.isDirectory()) {
38 this.setMessage("不是有效的目录!");
39 return false;
40 }
41 BufferedReader reader = null;
42 BufferedWriter writer = null;
43 String str;
44 try {
45 reader = new BufferedReader(new FileReader(srcFile));
46 writer = new BufferedWriter(new FileWriter(desFile));
47 // 判断目标文件是否存在及其格式,不存在就创建,格式不对先删除,存在就替代
48 if (!desFile.exists() || !desFile.isFile()) {
49 if (desFile.exists()) {
50 desFile.delete();
51 }
52 desFile.createNewFile();
53 }
54 // 从源文件读取数据,并写入目标文件
55 str = reader.readLine();
56 while (str != null) {
57 writer.write(str);
58 writer.newLine();
59 str = reader.readLine();
60 }
61 } catch (IOException e) {
62 this.setMessage(e.getMessage());
63 return false;
64 } finally {
65 if (reader != null) {
66 try {
67 reader.close();
68 } catch (IOException e) {
69 this.setMessage(e.getMessage());
70 }
71 }
72 if (writer != null) {
73 try {
74 writer.close();
75 } catch (IOException e) {
76 this.setMessage(e.getMessage());
77 }
78 }
79 }
80 return true;
81}
82private List fileList = new ArrayList();
83
84/** *//**
85 * 列出所有文件
86 * @param srcFile
87 */
88private void file(File srcFile) {
89 if (srcFile.isDirectory()) {
90 String[] files = srcFile.list();
91
92 for (int i = 0; i < files.length; i++) {
93 File f = new File(srcFile + "/" + files[i]);
94 // 如果是文件加入列表,否则递归列出
95 if (f.isFile()) {
96 fileList.add(f);
97 } else
98 file(f);
99 }
100 }else this.setMessage(srcFile.getAbsolutePath()+"不是目录");
101}
102/** *//**
103 * 建立目录
104 * @param des
105 * @throws IOException
106 */private void mkdir(File des) {
107 if (!des.exists() || !des.isDirectory()) {
108 mkdir(des.getParentFile());
109 if (des.exists()) {
110 des.delete();
111 }
112 des.mkdir();
113 }
114}
115/** *//**
116 * 复制目录 将源目录下所有文件拷贝到目标目录下
117 * @param src 源目录
118 * @param des 目标目录
119 */
120public boolean copyDir(String src, String des) {
121 File srcFile = new File(src);
122 if (!srcFile.exists()) {
123 this.setMessage("源目录不存在!");
124 return false;
125 } else if (!srcFile.isDirectory()) {
126 this.setMessage(src+"不是有效的目录!");
127 return false;
128 }
129 file(srcFile);
130
131 for (int i = 0; i < fileList.size(); i++) {
132 String srcName = ((File) fileList.get(i)).getPath();
133 String desName = srcName.substring(src.length(), srcName.length());
134 desName = des + desName;
135 File dir=new File(desName).getParentFile();
136 mkdir(dir);
137
138 if(!copyFile(srcName, dir.getPath())){
139 return false;
140 }
141 }
142 return true;
143}
144public static void main(String[] args) {
145
146 FileCopy t = new FileCopy();
147 System.out.println(t.copyFile("D:/aaa.txt","E:"));
148 String src="D:/asdf";
149 String des="E:/adf";
150 System.out.println(t.copyDir(src, des));
151 System.out.println(t.getMessage());
152}
153
154}
155
156
2 import java.io. * ;
3 import java.util.ArrayList;
4 import java.util.List;
5 public class FileCopy {
6private String message = "";
7public String getMessage() {
8 return message;
9}
10public void setMessage(String message) {
11 this.message = message;
12}
13/** *//**
14 * 将源文件拷贝到目标文件
15 *
16 * @param src
17 * 写源文件地址,需文件名
18 * @param des
19 * 写目标文件地址,无需文件名
20 */
21public boolean copyFile(String src, String des) {
22 File srcFile = new File(src);
23 File desDir = new File(des);
24 File desFile = new File(des + "/" + srcFile.getName());
25 // 判断源文件是否存在
26 if (!srcFile.exists()) {
27 this.setMessage("源文件不存在!");
28 return false;
29 } else if (!srcFile.isFile()) {
30 this.setMessage("源文件格式错!");
31 return false;
32 }
33 // 判断源文件是否存在
34 if (!desDir.exists()) {
35 this.setMessage("目标目录不存在!");
36 return false;
37 } else if (!desDir.isDirectory()) {
38 this.setMessage("不是有效的目录!");
39 return false;
40 }
41 BufferedReader reader = null;
42 BufferedWriter writer = null;
43 String str;
44 try {
45 reader = new BufferedReader(new FileReader(srcFile));
46 writer = new BufferedWriter(new FileWriter(desFile));
47 // 判断目标文件是否存在及其格式,不存在就创建,格式不对先删除,存在就替代
48 if (!desFile.exists() || !desFile.isFile()) {
49 if (desFile.exists()) {
50 desFile.delete();
51 }
52 desFile.createNewFile();
53 }
54 // 从源文件读取数据,并写入目标文件
55 str = reader.readLine();
56 while (str != null) {
57 writer.write(str);
58 writer.newLine();
59 str = reader.readLine();
60 }
61 } catch (IOException e) {
62 this.setMessage(e.getMessage());
63 return false;
64 } finally {
65 if (reader != null) {
66 try {
67 reader.close();
68 } catch (IOException e) {
69 this.setMessage(e.getMessage());
70 }
71 }
72 if (writer != null) {
73 try {
74 writer.close();
75 } catch (IOException e) {
76 this.setMessage(e.getMessage());
77 }
78 }
79 }
80 return true;
81}
82private List fileList = new ArrayList();
83
84/** *//**
85 * 列出所有文件
86 * @param srcFile
87 */
88private void file(File srcFile) {
89 if (srcFile.isDirectory()) {
90 String[] files = srcFile.list();
91
92 for (int i = 0; i < files.length; i++) {
93 File f = new File(srcFile + "/" + files[i]);
94 // 如果是文件加入列表,否则递归列出
95 if (f.isFile()) {
96 fileList.add(f);
97 } else
98 file(f);
99 }
100 }else this.setMessage(srcFile.getAbsolutePath()+"不是目录");
101}
102/** *//**
103 * 建立目录
104 * @param des
105 * @throws IOException
106 */private void mkdir(File des) {
107 if (!des.exists() || !des.isDirectory()) {
108 mkdir(des.getParentFile());
109 if (des.exists()) {
110 des.delete();
111 }
112 des.mkdir();
113 }
114}
115/** *//**
116 * 复制目录 将源目录下所有文件拷贝到目标目录下
117 * @param src 源目录
118 * @param des 目标目录
119 */
120public boolean copyDir(String src, String des) {
121 File srcFile = new File(src);
122 if (!srcFile.exists()) {
123 this.setMessage("源目录不存在!");
124 return false;
125 } else if (!srcFile.isDirectory()) {
126 this.setMessage(src+"不是有效的目录!");
127 return false;
128 }
129 file(srcFile);
130
131 for (int i = 0; i < fileList.size(); i++) {
132 String srcName = ((File) fileList.get(i)).getPath();
133 String desName = srcName.substring(src.length(), srcName.length());
134 desName = des + desName;
135 File dir=new File(desName).getParentFile();
136 mkdir(dir);
137
138 if(!copyFile(srcName, dir.getPath())){
139 return false;
140 }
141 }
142 return true;
143}
144public static void main(String[] args) {
145
146 FileCopy t = new FileCopy();
147 System.out.println(t.copyFile("D:/aaa.txt","E:"));
148 String src="D:/asdf";
149 String des="E:/adf";
150 System.out.println(t.copyDir(src, des));
151 System.out.println(t.getMessage());
152}
153
154}
155
156