需求:当下载的文件内包含了许多不同的文件而无法快速的进行选择操作时急需一个工具对文件进行筛选操作。
以下便是我闲时在百度网盘上下载的字体文件,但由于下载解压后的文件夹内除了层层套娃的同时还有各种后缀的数据,如果使用原始方法将以ttf和otf后缀结尾的字体资源安装到fonts文件夹内的话多的不说十几二十分钟肯定是需要的了!太浪费时间了呀,又这么懒,不就得想法子偷偷懒?于是不就这么出来了!!!(wdg这自带的代码整出来真难看,我还是先截图吧。使用的软件是IDEA) 涉及到的基本都是些比较基础的东西,希望能看懂吧。
欧克,接下来就是cv的时候了:
import java.io.*;
import java.util.*;
/**
* @author 人民广场不吃炸鸡
*/
public class FolderClassification {
/*
* 给网盘上下载的字体文件进行整理,将字体文件里自己需要的字体资源整理提取出来并放在自己建的临时文件夹(D:\\...\\Staging data注意:是可以自己设置的,不必和我一样哈)内。最好先整一个临时文件夹,不然要是出了问题不得把我骂死,效果啊!!!在新文件夹内看起来都好看些,到时候再CV嘛,这些都不是问题;
*
* 当然除了分析整理字体资源文件也能干其它事,有待有心人去拓展。
*
* 本代码翻译支持:网易有道翻译10.0.9版本;
*
* 特此声明:一切行为都仅限于个人日常学习交流使用,并未参与任何商业性质的使用推广!(所以就别问我字体文件等资源哪里获得了哦!)
*
* */
public static void getFile(File dir, FilenameFilter filter, List<File> list) throws IOException {
File[] files = dir.listFiles();
for (File file : files) {
//如果时是目录则进行递归查询
if (file.isDirectory())
{
getFile(file, filter, list);
} else {
//如果是文件就将文件放入list列表中
if (filter.accept(dir, file.getName()))
{
list.add(file);
}
}
}
}
public static void WriteToFile(List<File> list) throws IOException {
//这一步不用看都知道干啥吧,毕竟开头注释里都有说
String dirString = "D:\\BaiduNetdiskDownload\\fonts\\300多款设计师典藏中英日字体\\300多款设计师典藏中英日字体(安装方法请关注........)\\Staging data";
FileInputStream fis = null;
FileOutputStream fos = null;
int num = 0;
byte[] bt = new byte[1024];
try {
for (File file : list) {
//读文件
fis = new FileInputStream(file);
//写文件
fos = new FileOutputStream(new File(dirString, file.getName()));
System.out.println(file.getAbsolutePath());
while ((num = fis.read(bt)) != -1) {
fos.write(bt, 0, num);
fos.flush();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
fis.close();
fos.close();
}
}
public static void main(String[] args) {
File dirFile = new File("D:\\BaiduNetdiskDownload\\fonts\\300多款设计师典藏中英日字体\\300多款设计师典藏中英日字体(安装方法请关注......)");
//对上行代码的注释哦! 关注啥就可以省略了,只要知道这是一个文件夹就行了。 另外为了方便各位更快获取目标文件夹地址介绍一个快捷键:alt+d快速选中地址,然后cv大法。
FilenameFilter filter = new FilenameFilter() {
//整理出有otf作为后缀名的字体资源
public boolean accept(File dir, String name) {
return name.endsWith(".otf");
}
//整理出有ttf作为后缀名的字体资源
//public boolean accept(File dir, String name) {return name.endsWith(".ttf");}
};
List<File> list = new ArrayList<File>();
try {
//查找符合条件的文件
getFile(dirFile, filter, list);
// 将正合我意的文件资源放入指定的目录中
WriteToFile(list);
} catch (IOException e) {
e.printStackTrace();
}
}
}