java中文件操作大全
本文为本人在工作学习中的总结,每个方法都经过测试,记在博客上一方面是为了自己日后工作方便,另一方面是为了给大家提供方便,节约时间。
一.获得控制台用户输入的信息
/** */
/**
获得控制台用户输入的信息
*
@return
*
@throws
IOException
*/
public
String getInputMessage()
throws
IOException
...
{
System.out.println(
"
请输入您的命令∶
"
);
byte
buffer[]
=
new
byte
[
1024
];
int
count
=
System.in.read(buffer);
char
[] ch
=
new
char
[count
-
2
];
//
最后两位为结束符,删去不要
for
(
int
i
=
0
;i
<
count
-
2
;i
++
)
ch[i]
=
(
char
)buffer[i];
String str
=
new
String(ch);
return
str;
}
可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进。
二.复制文件
1.以文件流的方式复制文件
/** */
/**
以文件流的方式复制文件
*
@param
src 文件源目录
*
@param
dest 文件目的目录
*
@throws
IOException
*/
public
void
copyFile(String src,String dest)
throws
IOException
...
{
FileInputStream in
=
new
FileInputStream(src);
File file
=
new
File(dest);
if
(
!
file.exists())
file.createNewFile();
FileOutputStream out
=
new
FileOutputStream(file);
int
c;
byte
buffer[]
=
new
byte
[
1024
];
while
((c
=
in.read(buffer))
!=-
1
)
...
{
for
(
int
i
=
0
;i
<
c;i
++
)
out.write(buffer[i]);
}
in.close();
out.close();
}
该方法经过测试,支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式
三.写文件
1.利用PrintStream写文件
/** */
/**
* 文件输出示例
*/
public
void
PrintStreamDemo()
...
{
try
...
{
FileOutputStream out
=
new
FileOutputStream(
"
D:/test.txt
"
);
PrintStream p
=
new
PrintStream(out);
for
(
int
i
=
0
;i
<
10
;i
++
)
p.println(
"
This is
"
+
i
+
"
line
"
);
}
catch
(FileNotFoundException e)
...
{
e.printStackTrace();
}
}
2.利用StringBuffer写文件
public
void
StringBufferDemo()
throws
IOException...
...
{
File file
=
new
File(
"
/root/sms.log
"
);
if
(
!
file.exists())
file.createNewFile();
FileOutputStream out
=
new
FileOutputStream(file,
true
);
for
(
int
i
=
0
;i
<
10000
;i
++
)...
...
{
StringBuffer sb
=
new
StringBuffer();
sb.append(
"
这是第
"
+
i
+
"
行:前面介绍的各种方法都不关用,为什么总是奇怪的问题
"
);
out.write(sb.toString().getBytes(
"
utf-8
"
));
}
out.close();
}
该方法可以设定使用何种编码,有效解决中文问题。
四.文件重命名
/** */
/**
文件重命名
*
@param
path 文件目录
*
@param
oldname 原来的文件名
*
@param
newname 新文件名
*/
public
void
renameFile(String path,String oldname,String newname)
...
{
if
(
!
oldname.equals(newname))
...
{
//
新的文件名和以前文件名不同时,才有必要进行重命名
File oldfile
=
new
File(path
+
"
/
"
+
oldname);
File newfile
=
new
File(path
+
"
/
"
+
newname);
if
(newfile.exists())
//
若在该目录下已经有一个文件和新文件名相同,则不允许重命名
System.out.println(newname
+
"
已经存在!
"
);
else
...
{
oldfile.renameTo(newfile);
}
}
}
五.转移文件目录
转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件,而转移文件目录则是转移后,只有新目录中存在该文件。
/** */
/**
转移文件目录
*
@param
filename 文件名
*
@param
oldpath 旧目录
*
@param
newpath 新目录
*
@param
cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作
*/
public
void
changeDirectory(String filename,String oldpath,String newpath,
boolean
cover)
...
{
if
(
!
oldpath.equals(newpath))
...
{
File oldfile
=
new
File(oldpath
+
"
/
"
+
filename);
File newfile
=
new
File(newpath
+
"
/
"
+
filename);
if
(newfile.exists())
...
{
//
若在待转移目录下,已经存在待转移文件
if
(cover)
//
覆盖
oldfile.renameTo(newfile);
else
System.out.println(
"
在新目录下已经存在:
"
+
filename);
}
else
...
{
oldfile.renameTo(newfile);
}
}
}
六.利用dom4j读取xml文件
/** */
/**
从目录中读取xml文件
*
@param
path 文件目录
*
@return
*
@throws
DocumentException
*
@throws
IOException
*/
public
Document readXml(String path)
throws
DocumentException,IOException
...
{
File file
=
new
File(path);
BufferedReader bufferedreader
=
new
BufferedReader(
new
FileReader(file));
SAXReader saxreader
=
new
SAXReader();
Document document
=
(Document)saxreader.read(bufferedreader);
bufferedreader.close();
return
document;
}
posted on 2006-10-25 13:37
dragon 阅读(163)
评论(0) 编辑 收藏 所属分类:
java