vlinDone
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 33, comments - 17, trackbacks - 0
文件拷贝
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
posted on 2008-07-23 17:41
scea2009
阅读(78)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
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
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
个人
网摘(6)
随笔档案
2008年12月 (2)
2008年8月 (1)
2008年7月 (24)
2008年6月 (1)
2008年5月 (4)
PL/SQL存储过程与函数
搜索
最新评论
1. re: 18位号码身份证校验码的计算公式[未登录]
1@邱丽娟
--李杰
2. re: 生成 JSON 字符串的工具
ddddddddd
--hls
3. re: 18位号码身份证校验码的计算公式
340621198706139338
--陆树军
4. re: 生成 JSON 字符串的工具
12121
--11112dacda
5. re: 18位号码身份证校验码的计算公式
wozhidao
--lixziyu
阅读排行榜
1. 18位号码身份证校验码的计算公式(25051)
2. 生成 JSON 字符串的工具 (4954)
3. s:select(2859)
4. 关于 Calendar.getInstance()(1408)
5. 根据输入的ISBN号,检验ISBN的有效性(1394)
评论排行榜
1. 18位号码身份证校验码的计算公式(10)
2. 根据输入的ISBN号,检验ISBN的有效性(4)
3. 生成 JSON 字符串的工具 (2)
4. 时间计算工具类(1)
5. 数据库连接(0)