第一次写csdn,没有太多的经验,勿吐槽。下面用简化的方式描述几个常用的知识点。
IO是一个挺重要的部分对于技术来说。顾名思义,Input(输入)和 output(输出)。
第一部分:让我们了解一下传入,创建,和遍历文档File的几种常用的java方式
import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.lang.reflect.Field; public class DemoFile { public static void main(String[] args) throws IOException { /** * 创建文件和文件夹 */ File haha = new File("/Users/christopoher/Desktop/demoFile"); boolean newFile = haha.createNewFile();//可以按住command点击进入createNewFile()方法扫一下包中的源码 // File dir = new File("/Users/christopoher/Desktop/nb"); // boolean dirBool = dir.mkdir();//可以按住command点击进入createNewFile()方法扫一下包中的源码 // File a = new File(dir, "a.txt");//可以按住command点击进入createNewFile()方法扫一下包中的源码 构造方法 // boolean fileBo = a.createNewFile();//可以按住command点击进入createNewFile()方法扫一下包中的源码 // File b = new File(dir, "b.pdf"); // boolean fileBool = b.createNewFile(); // System.out.println(newFile & dirBool & fileBool & fileBo ? "创建成功" : "创建失败"); // System.out.println(a.getAbsoluteFile());//可以按住command点击进入createNewFile()方法扫一下包中的源码 // System.out.println(b.getAbsolutePath()); // 获取此对象的地址 // System.out.println(File.pathSeparator); // 分隔符适用于不同操作系统 // System.out.println(File.separator); // 分隔符适用于不同操作系统 /** * 文件遍历 */ File f = new File("/Users/christopoher/Desktop"); File[] files = f.listFiles(); //正常正常遍历方法 //fileTraverse(files); // 内部类方法 //listFiles2(f); //相对路径与绝对路径or relative path and absolute path // File file1 = new File("/Users/christopoher/Desktop/Asian371/岳阳楼记.docx"); // File file2 = new File("岳阳楼记.docx"); // System.out.println("file1的路径:" + file1.getAbsolutePath()); // System.out.println("file2的路径:" + file2.getAbsolutePath()); } public static void fileTraverse(File [] files){ if(files != null && files.length > 0){ for (File file: files) { if(file.isFile()){ // 找到目标文件了 if(file.getName().endsWith(".pdf")){ System.out.println("找到一个pdf文件:" + file.getAbsolutePath()); } }else{ //文件夹 File[] files2 = file.listFiles(); fileTraverse(files2); } } } } /** * 另一种方式 A */ public static void listFiles(File file){ // 创建fileFilter过滤器并且描述规则 FileFilter fileFilter = new AVIFileFilter(); // 通过文件获取子文件 File[] files = file.listFiles(fileFilter); if(files != null && files.length > 0)// 这一步很重要 很可能会有空文件 for (File f: files) { if(f.isDirectory()){ listFiles(f); }else{ System.out.println("找到一个pdf:" + f.getAbsolutePath()); } } } /** * A 运用了过滤器接口 */ static class AVIFileFilter implements FileFilter { @Override public boolean accept(File pathname) { if(pathname.getName().endsWith(".pdf") || pathname.isDirectory()){ return true; } return false; } } /** * 最舒适的写法使用匿名内部类 * 写一遍filter custom就够了 */ public static void listFiles2(File file){ // 创建fileFilter过滤器并且描述规则 // 通过文件获取子文件 File[] files = file.listFiles(new FileFilter(){ @Override public boolean accept(File pathname) { if(pathname.getName().endsWith(".pdf") || pathname.isDirectory()){ return true; } return false; } }); if(files != null && files.length > 0)// 这一步很重要 很可能会有空文件 for (File f: files) { if(f.isDirectory()){ listFiles(f); }else{ System.out.println("找到一个pdf:" + f.getAbsolutePath()); } } } }