package day33; /** * 递归调用,删除文件 */ import java.io.File; public class FileDemo07 { public static void main(String[] args) { File file = new File("a"); deleteFile(file); } public static void deleteFile(File file){ if(file.isDirectory()){ File[] subs = file.listFiles(); for(File sub:subs){ deleteFile(sub);//递归调用 } } file.delete();//不管如何 都是删除 } }
package day33; import java.io.File; import java.io.FileFilter; /** * *获取目录下的部分子项 *给定一个过滤条件,返回当前目录下满足条件的子例 *过滤条件使用FileFilter类定义(接口,文件过滤器) */ public class FileDemo01 { public static void main(String[] args){ /** *需求:获取文件文件 *1定义一个FileFilter 并定义过滤条件 *2使用listFiles方法并将过滤器传入并返回符合条件的子项 * */ //使用匿名类的方式创建过滤器匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 FileFilter filter = new FileFilter(){ public boolean accept(File file){ /** * 文本文件应该是名字以.txt结尾 */ return file.getName().endsWith(".txt"); } }; /** * 调用File的重载方法listFiles(FileFilter filter) * 将当前目录中符合filer要求的子项返回 */ File file = new File("."); if(file.isDirectory()){ File[] subsFiles = file.listFiles(filter); for(File sub:subsFiles){ System.out.println(sub.getName()); } } } }
RandomAccessFile 用于读写文件内容的类
java 中文件模型
数据在硬盘中保存的形式byte by byte
读写文件实际上就是读写字节
创建RandomAccessFile
RandomAccessFile(File file,String mode)
mode : rw 读写 ; r只读
package day33; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; /** * *读写文件内容 * */ public class FileDemo02 { public static void main(String[] args){ RandomAccessFile test = null; try{ File file = new File("test.txt"); if(!file.exists()){ file.createNewFile(); } test = new RandomAccessFile(file,"rw"); test.write(1);//该方法写出1个字节,写的是data的低8位2进制的数据 test.write('a'); int max = Integer.MAX_VALUE; test.write(max>>>24); test.write(max>>>16); test.write(max>>>8); test.write(max); /** * 连续写4个字节,将int值写入文件 */ test.writeInt(max);// /** * 写一个字符串 */ String str = "wo can do it"; byte[] data = str.getBytes(); }catch(IOException e){ e.printStackTrace(); }finally{ try { if(test != null){//防止空指针异常 test.close(); } } catch (IOException e) { e.printStackTrace(); } } } }