您的位置:首页

【FileUtils】File对文件与目录的处理&FileUtis工具的使用

2017-10-30 15:37 621 查看
[b]-------------------File的使用--------------[/b]

1.File类对文件的处理

1.1目录结构:





1.2测试对文件Test.txt处理:

// 测试文件
@Test
public void test1() throws IOException {
String contextPath = System.getProperty("user.dir");// 获取项目名字
System.out.println("文件路径:  " + contextPath + "/Test.txt");
// 创建File的第一种方式
// File file = new File(contextPath + "/Test.txt");
// 第二种方式
File file = new File(contextPath, "/Test.txt");
// 判断文件是否存在,如果不存在就新创文件
if (!file.exists()) {
// file.delete();删除文件
file.createNewFile();// 创建一个Text.txt文件
System.out.println("新增文件");
}
System.out.println("是否是文件" + file.isFile());
System.out.println("是否是目录" + file.isDirectory());
// 获取文件大小(以字节为单位)
if (file.isFile()) {
System.out.println("文件大小:" + file.length() + "字节");
}
System.out.println("此文件的上级目录是" + file.getParent());
}


结果:

文件路径:  E:\EclipseWorkspace\AllTest/Test.txt
是否是文件true
是否是目录false
文件大小:40字节
此文件的上级目录是E:\EclipseWorkspace\AllTest


[b] 2.对目录的处理[/b]

2.1目录结构:





2.2测试代码:

// 测试目录
@Test
public void test2() throws IOException {
String contextPath = System.getProperty("user.dir");// 获取项目名字
System.out.println("文件路径:  " + contextPath + "\\text");
// 第一种方式
// File file = new File(contextPath,"text");
// 第二种
File file = new File(contextPath, "text");
System.out.println("文件是否存在" + file.exists());
if (!file.exists()) {// 如果目录不存在
file.mkdir();// 创建目录
}
// 判断文件是否存在,如果存在删除文件
System.out.println("是否是文件" + file.isFile());
System.out.println("是否是目录" + file.isDirectory());
// 列举目录下的文件的名字
if (file.isDirectory()) {
File[] listFiles = file.listFiles();
System.out.println("目录下的文件有:");
for (File fi : listFiles) {
// 列举文件名字与大小
System.out.println(fi.getName() + "   大小    " + fi.length() * 1.0 / 1024 + "KB");
// 删除文件
System.out.println("文件将被删除");
fi.delete();
}
}
System.out.println("此文件的上级目录是" + file.getParent());
}


结果:

文件路径:  E:\EclipseWorkspace\AllTest\text
文件是否存在true
是否是文件false
是否是目录true
目录下的文件有:
1.txt   大小    0.015625KB
文件将被删除
9.20PDM截图.pdf   大小    193.109375KB
文件将被删除
web.xml   大小    0.951171875KB
文件将被删除
此文件的上级目录是E:\EclipseWorkspace\AllTest




总结:如果删除一个目录下的文件可以用上述的办法遍历一个目录下的文件然后删除文件。

[b]-------------------FileUtils的使用([/b]commons-io.jar[b])--------------[/b]

需要注意的是tomcat的包下也有一个这个类,注意用的是commons-io的包,不要用错:

参考:http://langgufu.iteye.com/blog/2215918

分类说明演示:

1.写 文件/文件夹

/* 写文件
* 1.这里只列出3种方式全参数形式,api提供部分参数的方法重载
* 2.最后一个布尔参数都是是否是追加模式
* 3.如果目标文件不存在,FileUtils会自动创建
* */
//static void:write(File file, CharSequence data, String encoding, boolean append)
FileUtils.write(new File("D:/a/b/cxyapi.txt"), "程序换api","UTF-8",true);

//static void:writeLines(File file, Collection<?> lines, boolean append)
List<String> lines=new ArrayList<String>();
lines.add("欢迎访问:");lines.add("www.cxyapi.com");
FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true);

//static void:writeStringToFile(File file, String data, String encoding, boolean append)
FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), "作者:cxy", "UTF-8",true);


2.读 文件/文件夹

//读文件
//static String:readFileToString(File file, String encoding)
System.out.println(FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8"));

//static List<String>:readLines(File file, String encoding)
System.out.println(FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //返回一个list


3.删除 文件/文件夹

//删除目录
//static void:deleteDirectory(File directory)
FileUtils.deleteDirectory(new File("D:/not/cxyapi"));

//static boolean:deleteQuietly(File file)
FileUtils.deleteQuietly(new File("D:/not/cxyapi")); //文件夹不是空任然可以被删除,永远不会抛出异常


4.移动 文件/文件夹

//移动文件 或 文件夹
//static void:moveDirectory(File srcDir, File destDir)
FileUtils.moveDirectory(new File("D:/cxyapi1"), new File("D:/cxyapi2")); //注意这里 第二个参数文件不存在会引发异常
//static void:moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)
FileUtils.moveDirectoryToDirectory(new File("D:/cxyapi2"), new File("D:/cxyapi3"), true);
/* 上面两个方法的不同是:
* moveDirectory:D:/cxyapi2里的内容是D:/cxyapi1的内容。
* moveDirectoryToDirectory:D:/cxyapi2文件夹移动到到D:/cxyapi3里
*
* 下面的3个都比较简单没提供示例,只提供了api
* 其中moveToDirectory和其他的区别是 它能自动识别操作文件还是文件夹
*/
//static void:moveFileToDirectory(srcFile, destDir, createDestDir)
//static void:moveFile(File srcFile, File destFile)
//static void:moveToDirectory(File src, File destDir, boolean createDestDir)


5.copy

//结果是cxyapi和cxyapi1在同一目录
FileUtils.copyDirectory(new File("D:/cxyapi"), new File("D:/cxyapi1"));
//结果是将cxyapi拷贝到cxyapi2下
FileUtils.copyDirectoryToDirectory(new File("D:/cxyapi"), new File("D:/cxyapi2"));

//拷贝文件
FileUtils.copyFile(new File("d:/cxyapi.xml"), new File("d:/cxyapi.xml.bak"));
//拷贝文件到目录中
FileUtils.copyFileToDirectory(new File("d:/cxyapi.xml"), new File("d:/cxyapi"));
//拷贝url到文件
FileUtils.copyURLToFile(new URL("http://www.cxyapi.com/rss/cxyapi.xml"), new File("d:/cxyapi.xml"));


6.其他

//判断是否包含文件或者文件夹
boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt"));
System.out.println(b);

//获得临时目录 和 用户目录
System.out.println(FileUtils.getTempDirectoryPath());
System.out.println(FileUtils.getUserDirectoryPath());

//打开流,如果不存在创建文件及其目录结构
//第二个参数表示 文件流是否是追加方式
FileOutputStream fos=FileUtils.openOutputStream(new File("D:/cxyapi/cxyapi.txt"),true);
fos.write(new String("欢迎访问:www.cxyapi.com\r\n").getBytes());
fos.close();

//文件 或 文件夹大小
System.out.println(FileUtils.sizeOf(new File("D:/cxyapi")));
System.out.println(FileUtils.sizeOfDirectory(new File("D:/cxyapi")));


7.FilenameUtils可以对文件的名字进行处理,可以快速的获取文件的扩展名与基本名字:([b]commons-io.jar)[/b]



补充:

8.IOUtils实现文件拷贝

    org.apache.commons.io.IOUtils可以简单的将一个inputStream的文件读取到另一个outputStream,实现文件的拷贝,例如:

      只用传两个参数,第一个传递InputStream,第二个传递OutputStream

package cn.qlq.craw.Jsoup;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.commons.io.IOUtils;

public class IOutilsDownloadFile {
public static void main(String[] args) throws IOException {
String url = "http://qiaoliqiang.cn/fileDown/zfb.bmp";
URL url1 = new URL(url);
URLConnection conn = url1.openConnection();
InputStream inputStream = conn.getInputStream();
String path = "C:\\Users\\liqiang\\Desktop\\test.bmp";
OutputStream outputStream = new FileOutputStream(path);
// 利用IOutiks拷贝文件,简单快捷
IOUtils.copy(inputStream, outputStream);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐