本文共 4311 字,大约阅读时间需要 14 分钟。
File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
File(String pathname); // 将一个字符串路径封装成File对象File(String parent,String child); // 根据指定的父路径和文件路径创建File对象// 例如:File file = new File("F://", "a.txt");最终file对象的路径就是F:/a.txtFile(File parent,String child); // 根据指定的父路径对象和文件路径创建File对象/* 例如: * File file = new File("F://"); * File file2 = new File(file , "a.txt"); * 最终file对象的路径就是F:/a.txt */
构造方法只是创建一个File对象,在磁盘上并没有创建对应的文件
以下功能会对磁盘上的对应的文件进行创建或删除操作
boolean createNewFile(); // 指定路径不存在该文件时时创建文件,返回true,否则返回falseboolean mkdir(); // 当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false boolean mkdirs(); // 当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回falseboolean delete(); // 删除文件或者删除单级文件夹
boolean exists(); // 判断指定路径的文件或文件夹是否存在boolean isAbsolute(); // 判断当前路路径是否是绝对路径boolean isDirectory(); // 判断当前的目录是否存在boolean isFile(); // 判断当前路径是否是一个文件boolean isHidden(); // 判断当前路径是否是隐藏文件
File getAbsoluteFile(); // 获取文件的绝对路径,返回File对象String getAbsolutePath(); // 获取文件的绝对路径,返回路径的字符串String getParent(); // 获取当前路径的父级路径,以字符串形式返回该父级路径File getParentFile(); // 获取当前路径的父级路径,以字File对象形式返回该父级路径String getName(); // 获取文件或文件夹的名称String getPath(); // 获取File对象中封装的路径long lastModified(); // 以毫秒值返回最后修改时间long length(); // 返回文件的字节数boolean renameTo(File dest); // 将当前File对象所指向的路径 修改为 指定File所指向的路径
String[] list(); // 以字符串数组的形式返回当前路径下所有的文件和文件夹的名称File[] listFiles(); // 以File对象的形式返回当前路径下所有的文件和文件夹的名称static File[] listRoots(); // 获取计算机中所有的盘符
IO流分类: 流向 输入流 读取数据 FileReader Reader 输出流 写出数据 FileWriter Writer 数据类型 字节流 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流 字符输入流 读取数据 Reader 字符输出流 写出数据 Writer
字符流
// 创建一个文本文件,并给里面赋值File file = new File("F://a.txt");// 向文件中写入数据// 创建字符输出流对象FileWriter fileWriter = new FileWriter(file);fileWriter.write("hello\r\n");fileWriter.write("world\r\n");fileWriter.write("123");// 关流fileWriter.close();// 读取源文件// 创建字符输入流对象FileReader fileReader = new FileReader(file);// 创建目标文件File file2 = new File("F://b.txt");// 读取数据// 创建字符数组char[] ch = new char[1024];// 创建长度int leng = -1;// 创建循环读取数据while ((leng = fileReader.read(ch)) != -1) { // 创建字符输出流对象 FileWriter fileWriter2 = new FileWriter(file2); // 将读取到的数据输出 fileWriter2.write(ch, 0, leng); // 关流 fileWriter2.close();}// 关流fileReader.close();
字节流
// 创建字节输出流对象File file = new File("F://a.txt");FileOutputStream fileOutputStream = new FileOutputStream(file);// 创建字符数组char[] b = { 'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};for (char c : b) { // 将char中的数据写入文件中 fileOutputStream.write(c);}// 关流fileOutputStream.close();// 创建字节输入流对象FileInputStream fileInputStream = new FileInputStream(file);// 创建字节输出流对象File file2 = new File("F://b.txt");FileOutputStream fileOutputStream2 = new FileOutputStream(file2);// 读取文件byte[] ch = new byte[1024];int len = -1;while((len = fileInputStream.read(ch)) != -1) { fileOutputStream2.write(ch, 0, len);}// 关流fileOutputStream2.close();fileInputStream.close();
字节流可以操作所有类型的文件视频、图片都能使用
,因为所有的文件在计算机中都是以字节形式存储
实现代码与上述案例中字节流案例相同
是System下的类字段(被静态修饰的成员变量),都是字节流
public static final InputStream in; // 标准输入流public static final PrintStream out; // 标准输出流
标准输入流,用来读取由键盘输入的数据
标准输出流,用来将数据以字节流的方式输出到控制台上将任意数据类型
的数据打印到控制台上
println(String str); // 打印完自动换行print(String str); // 打印完不自动换行
自动换行 使用方法println()实现自动换行
自动刷新 创建PrintWriter对象时启动自动刷新开关,并且使用println等3个方法可以实现自动刷新 注意:创建FileWriter对象时boolean参数是是否追加,而创建打印流对象的boolean类型参数是是否自动刷新用于从流中读取对象的
ObjectInputStream 称为 反序列化流,利用输入流从文件中读取对象 ObjectOutputStream 称为 序列化流,利用输出流向文件中写入对象 特点:用于操作对象。可以将对象写入到文件中,也可以从文件中读取对象。当一个类的对象需要IO流进行读写的时候,这个类就必须实现序列化接口(Serializable)
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
特点: 1、Hashtable的子类,map集合中的方法都可以用。 2、该集合没有泛型。键值都是字符串。 3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 4、有和流技术相结合的方法。其中comments就是,显示在输出文件的第一行,一般用来描述文件中内容的,这个内容可以根据自己需求随便写