
FIle构造函数签名功能描述File(File parent, String child)根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。此类没有无参构造创建此类时必须指定路径指定的路径可以是不存在的虚构路径。File file new File(C:\\myfile);//手动在C盘创建了一个文件夹myfile File file1 new File(C:\\myfile\\a);//a文件夹不存在 file1不会创建文件夹a System.out.println(filefile------------,file1file1); //打印 fileC:\myfile------------,file1C:\myfile\a返回值类型方法签名方法功能描述booleanequals(Object obj)测试此抽象路径名与给定对象是否相等。//参数1是父路径参数2是子路径 File file2 new File(C:\\myfile, a); System.out.println(file1.equals(file2)); //true//父对象和子路径 File parent new File(C:\\myfile); File file3 new File(parent, a); System.out.println(file3file3);//file3C:\myfile\a返回值类型方法签名功能描述booleancanExecute()测试应用程序是否可以执行此抽象路径名表示的文件。booleancanRead()测试应用程序是否可以读取此抽象路径名表示的文件。booleancanWrite()测试应用程序是否可以修改此抽象路径名表示的文件。intcompareTo(File pathname)按字母顺序比较两个抽象路径名。booleancreateNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时不可分地创建一个新的空文件。static FilecreateTempFile(String prefix, String suffix)在默认临时文件目录中创建一个空文件使用给定前缀和后缀生成其名称。static FilecreateTempFile(String prefix, String suffix, File directory)在指定目录中创建一个新的空文件使用给定的前缀和后缀字符串生成其名称。booleandelete()删除此抽象路径名表示的文件或目录。voiddeleteOnExit()在虚拟机终止时请求删除此抽象路径名表示的文件或目录。返回值类型方法签名功能描述booleancanWrite()测试应用程序是否可以修改此抽象路径名表示的文件。intcompareTo(File pathname)按字母顺序比较两个抽象路径名。booleancreateNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时不可分地创建一个新的空文件。static FilecreateTempFile(String prefix, String suffix)在默认临时文件目录中创建一个空文件使用给定前缀和后缀生成其名称。static FilecreateTempFile(String prefix, String suffix, File directory)在指定目录中创建一个新的空文件使用给定的前缀和后缀字符串生成其名称。booleandelete()删除此抽象路径名表示的文件或目录。voiddeleteOnExit()在虚拟机终止时请求删除此抽象路径名表示的文件或目录。booleanequals(Object obj)测试此抽象路径名与给定对象是否相等。booleanexists()测试此抽象路径名表示的文件或目录是否存在。FilegetAbsoluteFile()返回此抽象路径名的绝对路径名形式。StringgetAbsolutePath()返回此抽象路径名的绝对路径名字符串。返回值类型方法签名功能描述FilegetCanonicalFile()返回此抽象路径名的规范形式。StringgetCanonicalPath()返回此抽象路径名的规范路径名字符串。longgetFreeSpace()返回此抽象路径名指定的分区中未分配的字节数。StringgetName()返回由此抽象路径名表示的文件或目录的名称。StringgetParent()返回此抽象路径名父目录的路径名字符串如果此路径名没有指定父目录则返回 null。FilegetParentFile()返回此抽象路径名父目录的抽象路径名如果此路径名没有指定父目录则返回 null。StringgetPath()将此抽象路径名转换为一个路径名字符串。longgetTotalSpace()返回此抽象路径名指定的分区的总字节数图片中未显示完整描述为该方法标准功能。返回值类型方法签名功能描述booleanisAbsolute()测试此抽象路径名是否为绝对路径名。booleanisDirectory()测试此抽象路径名表示的文件是否是一个目录。booleanisFile()测试此抽象路径名表示的文件是否是一个标准文件。booleanisHidden()测试此抽象路径名指定的文件是否是一个隐藏文件。longlastModified()返回此抽象路径名表示的文件最后一次被修改的时间。longlength()返回由此抽象路径名表示的文件的长度。String[]list()返回一个字符串数组这些字符串指定此抽象路径名表示的目录中的文件和目录。String[]list(FilenameFilter filter)返回一个字符串数组这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。返回值类型方法签名功能描述File[]listFiles()返回一个抽象路径名数组这些路径名表示此抽象路径名表示的目录中的文件。File[]listFiles(FileFilter filter)返回抽象路径名数组这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[]listFiles(FilenameFilter filter)返回抽象路径名数组这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。static File[]listRoots()列出可用的文件系统根。booleanmkdir()创建此抽象路径名指定的目录。booleanmkdirs()创建此抽象路径名指定的目录包括所有必需但不存在的父目录。booleanrenameTo(File dest)重新命名此抽象路径名表示的文件。booleansetExecutable(boolean executable)设置此抽象路径名所有者执行权限的一个便捷方法。booleansetExecutable(boolean executable, boolean ownerOnly)设置此抽象路径名的所有者或所有用户的执行权限。booleansetLastModified(long time)设置此抽象路径名指定的文件或目录的最后一次修改时间。booleansetReadable(boolean readable)设置此抽象路径名所有者读权限的一个便捷方法。booleansetReadable(boolean readable, boolean ownerOnly)设置此抽象路径名的所有者或所有用户的读权限。booleansetReadOnly()标记此抽象路径名指定的文件或目录从而只能对其进行读操作。booleansetWritable(boolean writable)设置此抽象路径名所有者写权限的一个便捷方法。创建一个文件public void testList3() throws IOException { File file new File(C:\\myfile\\a.txt); boolean newFile file.createNewFile(); System.out.println(是否创建成功newFile); }创建单层文件夹public void testList3() throws IOException { File file new File(C:\\myfile\\a);//手动在C盘创建了一个文件夹myfile boolean newFile file.mkdir(); System.out.println(文件夹是否创建成功newFile);//file3C:\myfile\a }创建多层文件夹public void testList3() throws IOException { File file new File(C:\\myfile\\b\\c\\d);//手动在C盘创建了一个文件夹myfile boolean newFile file.mkdirs(); System.out.println(文件夹是否创建成功newFile);//file3C:\myfile\a }获取功能Test public void testList4() throws IOException { File file new File(C:\\myfile\\b\\c\\d); File absoluteFile file.getAbsoluteFile();//获取绝对路径 System.out.println(file.equals(absoluteFile));//true }public void testList4() throws IOException { File file new File(C:\\myfile\\b\\c\\d); String absoluteFile file.getAbsolutePath(); //获取绝对路径 System.out.println(绝对路径absoluteFile);// 绝对路径C:\myfile\b\c\d }Test public void testList4() throws IOException { File file new File(C:\\myfile\\b\\c\\d); String absoluteFile file.getAbsolutePath(); //获取绝对路径 System.out.println(绝对路径absoluteFile);// 绝对路径C:\myfile\b\c\d System.out.println(getPath()file.getPath());//file里面写啥就显示啥C:\myfile\b\c\d }Test public void testList4() throws IOException { File file new File(C:\\myfile\\a.txt); System.out.println(获取文件名file.getName());//a.txt //获取父路径即获取上一层路径 System.out.println(获取父路径file.getParent());// C:\myfile }Test1(){ File file new File(C:\\myfile\\a.txt); /** * list() 是获得文件夹内部路径的,即如果 * 使用文件对象调用list,就会返回null */ String[] list file.list(); System.out.println(Arrays.toString(list)); }Test public void testList4() throws IOException { File file new File(C:\\myfile); String[] list file.list(); for (String f:list ) { System.out.println(ff); } }fafa.txtTest public void testList4() throws IOException { File file new File(C:\\myfile); // String[] list file.list(); File[] list file.listFiles(); for (File f:list) { //可以创建其他的对象 System.out.println(ff); // fC:\myfile\a // fC:\myfile\a.txt } }listFilter里面还可以包含一些过滤器import java.io.File; import java.io.FileFilter; /** * 只筛选txt格式的文件 * 返回值true文件会被加入结果数组 * 返回值false文件会被过滤丢弃 */ public class MyTxtFilter implements FileFilter { Override public boolean accept(File pathname) { // 先判断是否为普通文件排除文件夹 if (pathname.isFile()) { String fileName pathname.getName(); // 判断文件名是否以.txt结尾 if (fileName.endsWith(.txt)) { return true; } } return false; } }import java.io.File; /** * 获取指定文件夹下所有的txt记事本文件 */ public class TestFile { public static void main(String[] args) { // 这里替换成你要遍历的目标文件夹路径 File file new File(C:\\myfile); // 传入自定义过滤器筛选txt文件 File[] listFiles2 file.listFiles(new MyTxtFilter()); // 遍历打印筛选出的txt文件路径 for (File f : listFiles2) { System.out.println(f); } } }判断功能import java.io.File; import java.io.IOException; public class FileJudgeDemo { public static void main(String[] args) throws IOException { // 指向 C盘下 myfile 文件夹 File file new File(C:\\myfile); // 判断当前File对象是否为【文件夹/目录】 boolean directory file.isDirectory(); System.out.println(是否是文件夹 directory); // 判断当前File对象是否为【普通文件】 System.out.println(是否是普通文件 file.isFile()); //判断是否存在 file.exists(); } }重命名import java.io.File; import java.io.IOException; public class FileRenameDemo { public static void main(String[] args) throws IOException { // 原文件C:\myfile\a.txt File file new File(C:\\myfile\\a.txt); // 目标文件C:\myfile\A.txt同目录仅大小写改名 File file2 new File(C:\\myfile\\A.txt); // 执行重命名操作 boolean renameTo file.renameTo(file2); // 打印执行结果 System.out.println(renameTo); } }删除不走回收站只能删除空文件夹InputString是所有输入流类的超类他是一个抽象类。一般使用子类FileInputStream方法分类方法签名返回值类型功能说明注意事项数据读取abstract int read()int从输入流中读取数据的下一个字节抽象方法子类必须实现无数据时线程阻塞返回 - 1 代表流已结束数据读取int read(byte[] b)int从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中返回实际读取的字节数量返回 - 1 代表流结束不会保证一定读满整个数组数据读取int read(byte[] b, int off, int len)int将输入流中最多 len 个数据字节读入 byte 数组从 off 下标开始存储精准控制读取范围返回实际读取字节数返回 - 1 代表流结束预查询int available()int返回此输入流下一个方法调用可以不受阻塞地从此输入流读取或跳过的估计字节数仅为估算值不能当作流总长度父类默认实现返回 0网络流场景数值会动态变化资源管理void close()void关闭此输入流并释放与该流关联的所有系统资源流使用完毕必须关闭推荐搭配 try-with-resources 自动关闭实现了 Closeable 接口重读回退boolean markSupported()boolean测试此输入流是否支持 mark 和 reset 方法部分流如 FileInputStream 不支持该功能不支持时调用 reset 会抛异常重读回退void mark(int readlimit)void在此输入流中标记当前的位置readlimit 为标记有效阈值超出后标记失效可通过 reset 回退到该位置重读回退void reset()void将此流重新定位到最后一次对此输入流调用 mark 方法时的位置标记已失效或流不支持 mark 时会抛出 IOException可实现重复读取已消费的数据Test public void testList5() throws IOException { //读取文件到控制台读到末尾返回值为-1 File file new File(C:\\myfile\\a.txt); FileInputStream f1 new FileInputStream(file); try { int a -1; while ((a f1.read()) ! -1) { System.out.print((char) a); } } finally { f1.close(); } }还可以读一个数组Test public void testList5() throws IOException { //读取文件到控制台读到末尾返回值为-1 File file new File(C:\\myfile\\a.txt); byte[] bytes new byte[5]; FileInputStream f1 new FileInputStream(file); //读一个数组长度的数据并将数据放到数组中 int read f1.read(bytes); System.out.println(Arrays.toString(bytes)); }OutputStreamimport java.io.FileOutputStream; import java.io.IOException; public class FileOutDemo { public static void main(String[] args) throws IOException { // 方式1无第二个参数默认覆盖原有文件内容 // FileOutputStream fos new FileOutputStream(C:\\myfile\\b.txt); // 方式2第二个参数true开启追加写入不覆盖原有内容 FileOutputStream fos new FileOutputStream(C:\\myfile\\b.txt, true); // 写入单个字节99 对应字符 c // fos.write(99); // 字节数组65A、66B、67C byte[] bytes {65, 66, 67}; // 将整个字节数组写入文件 fos.write(bytes); // 关闭流释放资源 fos.close(); } }缓冲区输入输出流import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyMp3Demo { public static void main(String[] args) throws IOException { // 记录复制开始时间 long beginTime System.currentTimeMillis(); // 字节输入流读取源文件 FileInputStream fis new FileInputStream(C:\\myfile\\Angel.mp3); // 字节输出流写入目标复制文件 FileOutputStream fos new FileOutputStream(C:\\myfile\\AngelCopy.mp3); int i -1; // 循环读取单个字节读到末尾返回-1结束循环 while ((i fis.read()) ! -1) { fos.write(i); } // 关闭流释放资源 fis.close(); fos.close(); // 记录结束时间计算耗时 long endTime System.currentTimeMillis(); System.out.println(复制结束,耗时 (endTime - beginTime) 毫秒); } }效率比较慢使用缓冲区来进行输入输出效率翻倍耗时最短。BufferedInputStream缓冲字节输入流BufferedOutputStream缓冲字节输出流利用这两个缓冲区输入输出流可以大大提高数据传输效率。它们底层由一个数组用来存储数据。就可以一次读多个一次写多个数据。public class BufferCopyMp3 { public static void main(String[] args) throws IOException { // 原始字节输入流读取源音乐文件 FileInputStream fis new FileInputStream(C:\\myfile\\Angel.mp3); // 包装缓冲字节输入流提升读取效率 BufferedInputStream bis new BufferedInputStream(fis); // 原始字节输出流写入复制后的文件 FileOutputStream fos new FileOutputStream(C:\\myfile\\AngelCopy.mp3); // 包装缓冲字节输出流提升写入效率 BufferedOutputStream bos new BufferedOutputStream(fos); int i -1; // 循环从缓冲流读取单个字节读到文件末尾返回-1则结束 while ((i bis.read()) ! -1) { bos.write(i); } // 只需要关闭缓冲流底层原始流会自动关闭 bis.close(); bos.close(); } }Reader字符输入流的顶层父类。用于读取字符抽象类。一般用他的子类FileReader。一个一个的读import java.io.FileReader; import java.io.IOException; public class FileReaderDemo { public static void main(String[] args) { FileReader fr null; try { // 1. 创建字符输入流对象关联文件 fr new FileReader(c:\\myfile\\a.txt); // 读取第1个字符 int read fr.read(); System.out.println((char) read); // 读取第2个字符 int read2 fr.read(); System.out.println((char) read2); // 读取第3个字符 int read3 fr.read(); System.out.println((char) read3); // 读取第4个字符 int read4 fr.read(); System.out.println((char) read4); // 读取第5个字符直接打印数字文件末尾则输出-1 int read5 fr.read(); System.out.println(read5); } catch (IOException e) { // 文件不存在 / 读取失败异常处理 e.printStackTrace(); } finally { // 关闭流释放系统资源 if (fr ! null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } } }循环读import java.io.FileReader; import java.io.IOException; public class FileReaderDemo { public static void main(String[] args) { FileReader fr null; try { // 1. 创建字符输入流对象关联文件 fr new FileReader(c:\\myfile\\a.txt); int ch; while ((ch fr.read()) ! -1) { System.out.print((char) ch); } } catch (IOException e) { // 文件不存在 / 读取失败异常处理 e.printStackTrace(); } finally { // 关闭流释放系统资源 if (fr ! null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } } }FileWriter修饰符 / 返回值类型方法签名功能描述abstract voidclose()关闭此流关闭前会先自动刷新流的缓冲abstract voidflush()强制刷新该流的缓冲将缓冲区内的数据立即写出到目标位置voidwrite(char[] cbuf)写入完整的字符数组到输出流abstract voidwrite(char[] cbuf, int off, int len)写入字符数组的指定片段从数组off索引位置开始共写入len个字符voidwrite(int c)写入单个字符传入字符的 int 型编码值voidwrite(String str)写入完整的字符串到输出流voidwrite(String str, int off, int len)写入字符串的指定片段从字符串off索引位置开始共写入len个字符