一.File类

① java.io.file文件类以抽象的方式代表文件名和目录路径名。
② 该类主要用于文件和目录的创建、文件的查找和文件的删除等。
③ File对象代表磁盘中实际存在的文件和目录。

  1. //File构造方法
  2. File file = new File("file/cat.gif");
  3. File file_2 = new File("D:/Java/IDEA_work/practice/Stream/file/cat.gif");
  4. //file == file_2
  5. if (file.exists()) {
  6. if (file.isFile()) {
  7. System.out.println("类型:文件");
  8. System.out.println("文件名:" + file.getName());
  9. System.out.println("是否可读:" + file.canRead());
  10. System.out.println("是否可写:" + file.canWrite());
  11. System.out.println("是否为隐藏文件:"+file.isHidden());
  12. System.out.println("文件长度:" + file.length() + " byte");
  13. } else {
  14. System.out.println("类型:目录");
  15. File[] files = file.listFiles();
  16. for (int i = 0; i < Objects.requireNonNull(files).length; i++) {
  17. File f = files[i];
  18. System.out.println(f.getName());
  19. }
  20. }
  21. System.out.println("路径:" + file.getPath());
  22. System.out.println("绝对路径:" + file.getAbsolutePath());
  23. System.out.println("父路径:" + file.getParent());
  24. System.out.println("最后修改时间:" + new Date(file.lastModified()).toString());
  25. System.out.println("是否是绝对路径:"+file.isAbsolute());
  26. } else {
  27. System.out.println(file.getAbsolutePath() + "不存在文件或目录");
  28. }

File为文件时
image.png
File为目录时:
image.png

二.IO流

java流类图结构
Java IO流 - 图3

三.字节流和字符流

1.什么是流

  • 流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,输出流可以看作一个输出通道。
  • 输入流是相对程序而言的,外部传入数据给程序需要借助输入流。
  • 输出流是相对程序而言的,程序把数据传输到外部需要借助输出流。

字节流—传输过程中,传输数据的最基本单位是字节的流。
字符流—传输过程中,传输数据的最基本单位是字符的流。

2.字节流

  • 字节流的类通常以stream结尾

常用的字节输入流主要有:

①InputStream

InputStream是字节输入流的抽象基类

②FileInputStream

FileInputStream主要用来操作文件输入流

③FilterInputStream

InputStream的子类

③BufferedInputStream

BufferedInputStream带有缓冲的意思,普通的读是从硬盘里面读,而带有缓冲区之后,BufferedInputStream已经提前将数据封装到内存中,内存中操作数据要快,所以它的效率要要非缓冲的要高。

3.字符流

①Reader

字符输入流的抽象基类

②InputStreamReader

把字节数据流根据字符编码方式转成字符数据流

③FileReader

可以把FileInputStream中的字节数据转成根据字符编码方式转成字符数据流。

④BufferedReader

可以把字符输入流进行封装,将数据进行缓冲,提高读取效率。

四.文件输入输出

  • FileInputStream ```java ///构造函数 //name - 接受文件的url public FileInputStream(String name) throws FileNotFoundException {

} //file - 文件File public FileInputStream(File file) throws FileNotFoundException {

}

//将数据写入b,从off开始len个字节 int read(byte[] b, int off, int len) -1 读取到结尾 //跳过len个字节 long skip(long len)

  1. - FileOutputStream
  2. - 文件不存在
  3. - 创建新文件,文件夹不存在会抛出异常
  4. - 文件存在
  5. - 默认清空并写入文件
  6. ```java
  7. ///构造函数
  8. //name - 输出文件的url
  9. public FileOutputStream(String name) throws FileNotFoundException {
  10. }
  11. //file - 文件File
  12. public FileOutputStream(File file) throws FileNotFoundException {
  13. }
  14. //将b写入文件,从off开始的len的字节
  15. void write(byte[] b, int off, int len)

文件输入输出实例

  1. //InputStream in
  2. int len = -1;
  3. //每次最多写入1024字节
  4. byte[] bytes = new byte[1024];
  5. while ((len = in.read(bytes)) != -1) {
  6. out.write(bytes, 0, len);
  7. }
  8. //关闭流