FilenameUtils和FileUtils几乎包括所有的对文件名称和文件文件夹的操作
1.FilenameUtils
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
@Test
public void test38() {
String fileName="text.text";
String directory="/work/";
String fullName=directory+fileName;
String fir_1="/a/b/c";
String fir_2="/a/b/c";
String windowUrl="\\aa\\bb\\cc";
//获取文件名,去除文件路径和后缀名
//结果:text
System.out.println(FilenameUtils.getBaseName(fullName));
//获得前缀
//结果:/
System.out.println(FilenameUtils.getPrefix(fullName));
//获得文件名称
//结果:text.text
System.out.println(FilenameUtils.getName(fullName));
//window文件路径转换为Linux的文件路径
//结果:/aa/bb/cc
System.out.println(FilenameUtils.separatorsToUnix(windowUrl));
//合并路径和文件名,成为全路径名称,参数二不能带有"/"
//结果:/work/text.text
System.out.println(FilenameUtils.concat(directory,fileName));
//判断文件路径是否相同
System.out.println(FilenameUtils.equals(fir_1,fir_2));
System.out.println(FilenameUtils.equalsNormalized(fir_1,fir_2));
//判断指定的文件名称是否包含指定的文件扩展名
System.out.println(FilenameUtils.wildcardMatch(fileName,"*.text"));
//获得后缀名
System.out.println(FilenameUtils.getExtension(fullName));
}
2.FileUtils
1.写文件
public static void main(String[] args) throws IOException {
// FileUtils.write(new File("/Users/jjs/Desktop/abc.txt"), "commons-io工具类", "UTF-8", true);
//以追加的方式写入
// FileUtils.writeStringToFile(new File("/Users/jjs/Desktop/abcd.txt"), "作者:cxy", "UTF-8", true);
//写入多行
List<String> lines = new ArrayList<String>();
lines.add("第一行");
lines.add("第二行");
FileUtils.writeLines(new File("/Users/jjs/Desktop/abcd.txt"), lines, true);
}
2.读文件
public static void main(String[] args) throws IOException {
//读文件
System.out.println(FileUtils.readFileToString(new File("/Users/jjs/Desktop/abcd.txt"), "UTF-8"));
System.out.println(FileUtils.readLines(new File("/Users/jjs/Desktop/abcd.txt"), "UTF-8")); //返回一个list
}
3.文件复制
public static void main(String[] args) throws IOException {
FileUtils.copyDirectory();
FileUtils.copyDirectoryToDirectory();
FileUtils.copyFileToDirectory();
FileUtils.copyFile(new File("/Users/jjs/Desktop/abcd.txt"), new File("/Users/jjs/Desktop/abcd.txt_bak"));
//可实现快速下载
URL url = new URL("http://hzf-image-test.oss-cn-beijing.aliyuncs.com/hr_image/HF306268301810/1513632067664AbIB40pv_defalut.JPG?x-oss-process=image/resize,h_400");
File file = new File("/Users/jjs/Desktop/pic.jpg");
FileUtils.copyURLToFile(url, file);
}
4.快速复制
public static void main(String[] args) throws IOException {
//复制方式1
FileUtils.copyFile(new File("/Users/jjs/Desktop/abc.txt"), new File("/Users/jjs/Desktop/abc_bak.txt"));
//复制方式2
Writer write = new FileWriter("/Users/jjs/Desktop/abc_bak.txt");
InputStream ins = new FileInputStream(new File("/Users/jjs/Desktop/abc.txt"));
IOUtils.copy(ins, write);
write.close();
IOUtils.closeQuietly(ins);
//将内容同时写入两个不同的文件,就当是一种另类的复制吧
File test1 = new File("/Users/jjs/Desktop/split1.txt");
File test2 = new File("/Users/jjs/Desktop/split2.txt");
OutputStream outStream = null;
try {
FileOutputStream fos1 = new FileOutputStream(test1);
FileOutputStream fos2 = new FileOutputStream(test2);
//包含不同的文本
outStream = new TeeOutputStream(fos1, fos2);
outStream.write("One Two Three, Test".getBytes());
outStream.flush();
} catch (IOException ioe) {
System.out.println("Error writing to split output stream");
} finally {
IOUtils.closeQuietly(outStream);
}
}
快速获取网页内容:
public static void main(String[] args) throws IOException {
URL webUrl = new URL("https://wenku.baidu.com/view/7999faba960590c69ec376be.html?from=search");
// URL webUrl = new URL("http://ent.ifeng.com/a/20180105/43019249_0.shtml?_zbs_baidu_news");
InputStream ins = webUrl.openStream();
String contents = IOUtils.toString(ins, "gb2312");
System.out.println("contents: " + contents);
}