【Java】IO流

File类

介绍

  1. File类的一个对象,代表一个文件或一个文件目录
  2. File类声明在java.io包下
  3. File类中涉及关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成
  4. File类的对象常会作为参数传递到流的构造器中,指明读取或写入的终点
  5. 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有真实存在的文件或目录。
//以pathname为路径创建File对象,可以是 绝对路径或者相对路径,如果
public File(String pathname)

//以parent为父路径,child为子路径创建File对象。
public File(String parent,String child)

//根据一个父File对象和子文件路径创建File对象    
public File(File parent,String child)

路径的分类

  • 绝对路径:是一个固定的路径,从盘符开始
  • 相对路径:是相对于某个位置开始
  • IDEA中:如果大家开发使用JUnit中的单元测试方法测试,相对路径即为当前Module下。如果大家使用main()测试,相对路径即为当前的Project下。
  • Eclipse中:不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。

分隔符

路径中的每级目录之间用一个路径分隔符隔开。

路径分隔符和系统有关:

  • windows和DOS系统默认使用\来表示
  • UNIX和URL使用/来表示

Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个隐患,File类提供了一个常量:

public static final String separator

根据操作系统,动态的提供分隔符

举例

File file1= newFile("d:\\atguigu\\info.txt");
File file2= newFile("d:"+ File.separator+ "atguigu"+ File.separator+ "info.txt");
File file3= newFile("d:/atguigu");

常用方法

获取方法

public String getAbsolutePath()	//获取绝对路径
public String getPath()	//获取路径
public String getName()	//获取名称
public String getParent()	//获取上层文件目录路径。若无,返回null
public long length()	//获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified()	//获取最后一次的修改时间,毫秒值
    
public String[] list()	//获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles()	//获取指定目录下的所有文件或者文件目录的File数组    

重命名方法

public boolean renameTo(Filedest)	//把文件重命名为指定的文件路径

示例

File dir1= newFile("D:/IOTest/dir1");
if(!dir1.exists()) { 
    // 如果D:/IOTest/dir1不存在,就创建为目录
    dir1.mkdir();
}
// 创建以dir1为父目录,名为"dir2"的File对象
File dir2= newFile(dir1, "dir2");
if(!dir2.exists()) { 
    // 如果还不存在,就创建为目录
    dir2.mkdirs();
}
File dir4= newFile(dir1, "dir3/dir4");
if(!dir4.exists()) {
    dir4.mkdirs();
}
// 创建以dir2为父目录,名为"test.txt"的File对象
File file= newFile(dir2, "test.txt");
if(!file.exists()) { 
    // 如果还不存在,就创建为文件
    file.createNewFile();
}

IO流原理及流的分类

流的分类

  • 按数据单位:字节流(8 bit)、字符流(16 bit)
  • 按数据的流向:输入流、输出流
  • 按流的角色:
    • 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
    • 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写

【说明】:

  • 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
  • 输出output::将程序(内存)数据输出到磁盘、光盘等存储设备中。

流的体系结构

红框对应的是IO流中的4个抽象基类。蓝框的流需要重点关注。

posted @ 2021-10-11 23:09  至安  阅读(45)  评论(0编辑  收藏  举报