首页 > 代码库 > java文件操作
java文件操作
Java关于文件操作
最近工作中遇到的问题涉及到很多的文件操作,包括文件的读写,在当前目录,任意目录的文件创建,目录创建。涉及到文件的创建要求当父级目录不存在时创建父级目录。
- 创建目录
有两个函数,mkdir(),mkdirs();经过测试,发现mkdir()只适用于创建父级目录存在的情况,当父级目录不存在的时候,无法创建文件夹。而mkdirs()当父级目录不存在的时候依次创建父级目录再创建文件夹。代码如下;
public boolean CreatDir(String dirpath){
File dir = new File(dirpath);
if (dir.exists()) {
System.out.println("创建目录" + dirpath + "失败,目标目录已经存在");
return false;
}
//添加分隔符,也就是斜杠
if (!dirpath.endsWith(File.separator)) {
dirpath = dirpath + File.separator;
}
//创建目录
if (dir.mkdirs()) {
System.out.println("创建目录" + dirpath + "成功!");
return true;
} else {
System.out.println("创建目录" + dirpath + "失败!");
return false;
}
}
由于提供的dirpath很多情况下不知道父目录是否存在,个人比较喜欢使用mkdirs()来创文件夹。
2. 创建单个文件
创建文件时先判断父级目录是否存在,不存在则创建父级目录再创建文件,代码如下;
public boolean CreateFile(String filepath){
File file = new File(filepath);
if(file.exists()){
System.out.println("创建文件"+filepath+"失败"+", 文件已存在");
return false;
}
if(filepath.endsWith(File.separator)){
System.out.println("创建文件失败"+",创建目标是目录!");
return false;
}
//检查父级目录是否存在,不存在就创建
if(!file.getParentFile().exists()){
System.out.println("目标文件的父级目录不存在,准备创建父级目录");
if(!file.getParentFile().mkdirs()){
return false;
}
}
//创建文件
try{
if(file.createNewFile()){
System.out.println("创建文件"+filepath+"成功");
return true;
} else {
System.out.println("创建文件"+filepath+"失败");
return false;
}
}catch (IOException e){
e.printStackTrace();
System.out.println("创建文件"+filepath+"失败"+e.getMessage());
return false;
}
}
3.读文件
- 文件的读操作,使用带缓冲的字节流,以字节的形式读取文件,并写到参数指定的输出流out,
- 引用如下博客:http://www.cnblogs.com/coderworld/p/java-io-file.html#_label2
- 参考博客:http://www.cnblogs.com/stevendes/p/5483884.html
- 代码如下:按字符读文件,使用BufferedReader提高效率
public String ReadFileBychars(String filename){
File file = new File(filename);
String content = "";
//判断文件是否存在
if(!file.exists()||!file.isFile()){
return "";
}
FileReader fir = null;
BufferedReader bir = null;
try{
fir = new FileReader(file);
bir = new BufferedReader(fir);
String temp = "";
while((temp=bir.readLine())!=null){
content = content + temp;
}
} catch (IOException e){
e.printStackTrace();
}finally {
try{
bir.close();
fir.close();
}catch (IOException e){
e.printStackTrace();
}
}
return content;
}
- 按字节读文件,每次读一个字节,将文件内容返回,代码如下:
- 参考博客:http://www.cnblogs.com/stevendes/p/5483884.html
public String ReadFileByBytes(String filename){
File file = new File(filename);
String content = "";
if(!file.exists()||!file.isFile()){
return new String();
}
FileInputStream fis = null;
try{
fis= new FileInputStream(file);
int size = fis.available();
for(int i=0; i<size; i++){
content = content + (char)fis.read();
}
}catch (IOException e){
e.printStackTrace();
}finally {
try {
fis.close();
}catch (IOException e){
e.printStackTrace();
}
}
return content;
}
4.写文件
- 文件的写操作,使用带缓冲的字节流,从参数指定的输入流in读取,并以字节形式写到目标文件。
- 引用如下博客:http://www.cnblogs.com/coderworld/p/java-io-file.html#_label2
- 参考博客:http://www.cnblogs.com/stevendes/p/5483884.html
- 由于工作需要,在写文件时,需要传入内容写入文件。代码如下:
public boolean writeFileByFileWriter(String filePath, String content) {
File file = new File(filePath);
synchronized (file) {
FileWriter fw = null;
try {
fw = new FileWriter(filePath);
fw.write(content);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
try{
fw.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
java文件操作