从持久化存储设备将数据读取到内存 Input操作 输入流
从内存将数据写入到持久化设备 Output操作 输出流
数据在设备中是以文件(File)的形式体现,所以Java中以File类来描述文件和目录(文件和目录都可以是一个File对象)
public class FileDemo {
public static void main(String[] args) {
//"\\"第一个"\"为转义符
File f1 = new File("E:\\project java\\OO(Object-Orientde)\\4\\文件夹1\\新建文本文档.txt");
//绝对路径
File f2 = new File("文件1");
//相对路径
File f3 = new File("Q.txt");
//如果路径不存在 也可以去创建一个文件对象,此时的路径 Java不去检测它的存在性
File f4 = new File("E:\\project java\\OO(Object-Orientde)\\4\\文件夹1\\","新建文本文档.txt");
//文件目录,文件名
File parent = new File("E:\\project java\\OO(Object-Orientde)\\4\\文件夹1");
File f5 = new File(parent,"新建文本文档.txt");
//parent 文件的父目录/所属目录 以一个文件对象形式存在
//child 文件的名称/路径
File f6 = new File("E:"+File.separator+"project java"+File.separator+"OO(Object-Orientde)"+File.separator+"4"+File.separator+"文件夹1"+File.separator+"新建文本文档.txt");
//并不是所有的操作系统文件的分隔符 都是 \
//为了统一操作 Java在File类中 有这么一个字段
//static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
//具体是什么分隔符 有JVM(操作系统)来决定
}
}
File类的方法:
f1.getAbsolutePath();
System.out.println(f1.getAbsolutePath());
System.out.println(f2.getAbsolutePath());
//获取文件对象的绝对路径-字符串
打印结果>>>
E:\project java\OO(Object-Orientde)\4\文件夹1\新建文本文档.txt
E:\project java\OO(Object-Orientde)\4\work4_FileDemo\文件1
f1.getAbsoluteFile();
File parent1 = f1.getAbsoluteFile();
File parent2 = f2.getAbsoluteFile();
//获取文件对象的绝对路径-文件对象
f7.createNewFile();
注意:
需要声明异常
public static void main(String[] args) throws IOException{ ..... f7.createNewFile(); }
File f7 = new File("新文件1");
System.out.println(f7.createNewFile());
//创建f7文件
//true 说明文件不存在 且创建成功 ,默认目录为该项目的目录
//false 说明文件存在 且没有创建 也不是覆盖
File f8 = new File("Wj.txt");//带后缀名
f8.createNewFile();
f9.mkdir();
File f9 = new File("Dir1"); //文件和目录不能够用名称来分别
System.out.println(f9.mkdir());
//创建一个目录对象
//true 说明目录不存在 且创建成功
//false 说明目录存在 且没有创建 也不是覆盖
//目录也可以存在后缀名 但是没有任何意义的
f10.mkdirs();
File f10 = new File("Dir1\\Dir2\\Dir3");
f10.mkdirs();//会在Dir1目录下创建多级目录
f7.delete();
System.out.println(f7.delete());
//删除文件
//true 说明文件存在 且被删除
//false说明文件不存在 则不删除
f10.delete();
//删除目录
//机制:
// 1.删除后的文件/目录 不走回收站 直接删除 慎用!
// 2.如果一个目录中有多个文件或其他目录 则不能删除!只能一个一个删
f1.exists();
System.out.println(f1.exists());
//true 表示该文件/目录存在
//false 表示不存在
f1.isFile();
//判断该对象是否是一个文件
f1.isDirectory();
//判断该对象是否为一个目录
f9.list();
f9.list();//获取该目录下的文件和目录,返回一个String[]
String[] fileNames = f2.list(new FilenameFilter() {
//所接受的文件名
@Override
public boolean accept(File dir, String name) {
return name.startsWith("Class");//返回文件名开头为Class的文件和目录
}
});
f9.listFiles();
File[] lisF=f9.listFiles();//获取当前目录下的文件和目录,返回一个File[]
File[] files = f9.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");//返回后缀名为.java的文件
}
});