学习笔记:Java_IO(File)
来源:互联网 发布:python 数组减法 编辑:程序博客网 时间:2024/04/19 18:40
Java_IO(class File)
- Java的IO流这部分,从四月二十七号到三十号,总共学了三天。三天下来IO流当面的代码写了也有几千行,这里做一下详细的总结。总结按照文件类和流两部分分为两篇文章,这是第一篇。
- 我所学到的JavaIO流方面的知识主要是皓铭学长给我推荐的网课和教材中的知识,偏重的中心和实际开发中的中心应该还是有一定的差异。
我所学到的JavaIO流中的知识点分以下几个大部分- File(文件)类
- 文件字节流和文件字符流
- 缓冲流
- 对象流
- 随机读写流
- 打印流
File 类
概述
- File类将文件、文件夹(目录)、路径三部分封装,通过这个类的对象可以获得文件本身的一些信息,比如文件是否存在、所在的目录、读写权限、文件的长度等。
- 文件类对象只负责将数据封装,并不涉及到对文件的读写操作。
文件的路径
- 路径的表示法分为两类,分别是绝对路径和相对路径
- 绝对路径
- 在系统中具有唯一性
- 表示出来是从盘符到文件或目录名的一整个路径
- 相对路径
- 表示路径的相对关系
- 创建文件时如果采用相对路径的创建方法,那么默认新文件创建在当前工程所在的目录,或者当前程序所在的目录下
构造器
- File的构造器并不关心文件是否存在,文件是否存在由File的exist()实例方法负责判断。
- 构造器总共有三类:
- File (String filename);
- File (String directoryPath, String filename);
- File (File f, String filaname);
- 这三种构造器中,第二种更灵活,但是三种都比较常用。第一种构造器中的filename可以是目录也可是文件,而第二种的directoryPath和第三种的f必须是目录。
- Windows系统不区分大小写,而Linux系统区分,这点要注意。
分隔符
- 文件类在建立的时候构造器中路径存在中分隔符,分别是路径分隔符和名称分隔符
* 在编程中用File中的变量代替具体的符号可以体现系统无关性,但是在上课的试验中发现,在windows系统下用”/”可以代替”\”,但是不建议这样做。
常用方法总结
- 文件属性:
- 文件相关方法
也可以删除文件夹,但只能删除空文件夹
删除非空文件夹需要递归(演示代码在下边给出)
- 目录相关方法
过滤器
- 使用过滤器用于public String[] list(FileFilter obj)、public File[] listFiles(FileFilter obj)这两种方法中
- 在使用过滤器时,要向上述两种方法传递一个实现了FilenameFilter接口的对象,其中的FileFilter obj就是过滤器的对象
- 实现FileFilter接口的对象必须实现一个方法public boolean accept(File pathname),这个方法用于测定指定的抽象路径名是否应包含在某个路径列表,也就是说,当它的返回值为true,上述两种方法的返回之中就包含accept()参数中的pathname文件。只有文件符合条件,过滤器才会让文件加入到上述两种方法的返回值中。
部分功能实例代码
1. 递归实现删除非空文件夹
import java.io.File;public class deleteList { private long fileValue; public static void main(String[] args) { new deleteList().deleteUnemptyDirectory(); } private void deleteUnemptyDirectory() { long startTime = System.currentTimeMillis(); File file = new File("d:\\javatest"); if (file.exists() == true) { System.out.println("源目录存在并已定位:\n程序开始运行"); this.fileValue = 0; } else { System.out.println("源文件不存在,请创建文件后重试"); System.exit(0); } this.deleteProcess(file); String print = file.exists() == true ? "\n文件删除失败" : "\n文件删除成功"; System.out.println("程序运行完成" + print +"\n文件夹大小:" + this.fileValue + "\n总计运行时间:\t" + (System.currentTimeMillis() - startTime) + "ms"); } private void deleteProcess(File file) { File[] files = file.listFiles(); for (File temp : files) { if (temp.isDirectory() == true) { deleteProcess(temp); } else { this.fileValue += temp.length(); } temp.delete(); } file.delete(); }}
2. 利用过滤器遍迭代遍历文件夹
import java.io.File;import java.io.FileFilter;public class MyFileFilter implements FileFilter { private int count; public static void main(String[] args) { new MyFileFilter().overRead(); } private void overRead() { File file = new File("d:\\java\\javatest"); System.out.println("第一次遍历开始(不启用过滤器):"); this.count = 0; this.overRead(file); System.out.println("第一次遍历结束:\n获取文件总数:\t" + this.count); System.out.println("\n第二次遍历开始(启用过滤器):" + "选取以 .java 为后缀名的文件"); this.count = 0; this.overReadWithFilter(file); System.out.println("第二次遍历结束:\n获取文件总数:\t" + this.count); } private void overReadWithFilter(File file) { File[] files = file.listFiles(this); for (File temp : files) { if (temp.isDirectory() == true) this.overReadWithFilter(temp); else { this.count++; System.out.println(temp.getAbsolutePath()); } } } private void overRead(File file) { File[] files = file.listFiles(); for (File temp : files) { if (temp.isDirectory() == true) this.overRead(temp); else { this.count++; System.out.println(temp.getAbsolutePath()); } } } public boolean accept(File pathname) { if (pathname.isDirectory() == true) return true; if (pathname.getName().toLowerCase().endsWith(".java") == true) return true; return false; }}
0 0
- 学习笔记:Java_IO(File)
- JAVA_IO学习笔记
- 黑马程序员——学习笔记09.Java_IO流
- java_io
- java_io
- java_io
- Java_IO
- Java_IO
- java_IO
- 第二十天-Java_IO(File类、递归)
- java_IO流_学习总结
- C#学习笔记--File...
- Java学习笔记-File
- 学习笔记File类
- 黑马程序员 java_IO流笔记(一)
- 马程序员 java_IO流笔记(二)
- 黑马程序员 java_IO流笔记(三)
- Google File System学习笔记
- error while performing database login with the mysql driver 的解决方法
- earn the python in hard way习题31~35的附加习题
- TensorFlow 学习(十五)—— tensorflow.python.platform
- YII2 学习笔记-- RESTFUL API
- HDU5974
- 学习笔记:Java_IO(File)
- YII2 学习笔记
- YII2 学习笔记 --- Behavior
- Linux 系统恢复
- Nginx配置基础-正则表达式
- word2vec 模型思想和代码实现
- Python yield 使用浅析
- 设计模式讲解与代码实践(一)——抽象工厂
- 怎样做情感分析