1
// 文件拷貝
2
import java.io.*;
3
import java.util.ArrayList;
4
import java.util.List;
5
public class FileCopy {
6
private String message = "";
7
public String getMessage() {
8
return message;
9
}
10
public void setMessage(String message) {
11
this.message = message;
12
}
13
/**
14
* 將源文件拷貝到目標文件
15
*
16
* @param src
17
* 寫源文件地址,需文件名
18
* @param des
19
* 寫目標文件地址,無需文件名
20
*/
21
public 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
}
82
private List fileList = new ArrayList();
83
84
/**
85
* 列出所有文件
86
* @param srcFile
87
*/
88
private 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
*/
120
public 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
}
144
public 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

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156
