第十二讲 文件管理和IO入门
主要内容 File类和文件管理 File类的常用方法 数据流初步理解 数据流的封装 |
File类和Java文件管理
Java文件管理概述
Java提供了类似“资源管理器”或者DOS命令所具有的文件和目录管理功能。如:建立目录、删除文件、显示目录中的文件等。
文件:一组相关信息的集合。
目录:一种特殊的文件,用以存放文件和其他目录。
路径:从盘符经过各级目录到文件的目录序列
文件管理步骤:
² 建立File对象与具体的文件或目录建立联系
² 调用File类的方法进行文件和目录操作。
File类的认识
File类通过简易的方法封装了复杂的、与平台相关的文件及目录。
File类的构造方法
public File(String path)
创建一个File对象,指向path所表示的文件或者目录。
如:File dir=new File(“d:\\java\\javatry”);
File(File dir, String name)
创建一个File对象,指向dir指定的目录下的文件名为name
如:File f1=new File(dir,”Hello.java”);
File(String path, String name)
创建一个File对象,直接指向path路径下的name文件。
说明:创建一个 File对象,不会影响到真实的文件系统,只是在对象与真实的文件或目录之间建立了联系。
File类的常用方法
方法名 |
功能说明 |
public boolean canRead() |
|
|
测试程序是否能从该文件读 |
public boolean canWrite() |
|
|
测试程序是否能写该文件 |
public boolean exists() |
|
|
测试该文件(目录)是否存在 |
public boolean isDirectory() |
|
|
测试该文件是否目录 |
public boolean isFile() |
|
|
测试该文件是否一个文件 |
public String getAbsolutePath() |
|
|
获取该文件的绝对路径 |
public String getName() |
|
|
获取该文件的名字 |
public String getPath() |
|
|
获取该文件的路径 |
public long lastModified() |
|
|
返回该文件最后被修改的时间 |
public boolean setLastModified(long time) |
|
|
设置文件(目录)最后修改时间 |
public long length() |
|
|
返回文件的长度(bytes) |
public String[] list() |
|
如果文件是一个目录的话,返回该目录下所有文件名的列表 |
|
public boolean mkdir() |
|
|
建立一个目录 |
public boolean mkdirs() |
|
建立一个目录。如果该目录的父目录不存在的话,也创建它。 |
|
public boolean renameTo(File) |
|
|
将文件名改名为 File 参数所表示的文件名 |
public boolean delete() |
|
|
删除文件或目录 |
public boolean createNewFile()throws IOException |
|
自动创建一个新的空文件(如果对象指向的文件不存在的话) |
练习1、创建文件D:\Ok\try.txt(创建步骤:创建目录、创建文件)
练习2、将D:\Ok\try.txt的创建时间改为后一天。
练习3、删除文件和目录(删除步骤:先删除文件,后删除目录)
数据流初步理解
常见的输入输出问题
² 键盘输入一些数据,放到一个文件中保存
² 读取一个文本文件的内容,在屏幕上显示出来
² 一个文件向另一个文件进行数据传输
² 生成一个文件,保存程序的运行结果
数据流
这样一些数据传输问题中,有不同的源和目的地,流可看作是数据从源向目的地流动的一个途径。
数据源:获得数据的地方
数据宿:接收数据的地方
思考 1. “键盘输入一些数据”,数据源和数据宿分别是什么? 2. “程序运行结果保存到文件”,数据源和数据宿分别是什么? 3. “读取一个文本文件”,数据源和数据宿分别是什么? |
输入流和输出流
java.io是大多数面向数据流的输入/输出类的主要软件包。该包支持:
² 控制台I/O流
² 文件I/O流
² 字节I/O流
² 字符I/O流
Java所有的输入输出问题都基于数据流实现。
“I还是O?”,从程序的角度分辨:
输入流:数据源向程序运送数据
输出流:由程序向数据宿运送数据
思考 1. “键盘输入一些数据”,输入流还是输出流? 2. “程序运行结果保存到文件”,输入流还是输出流? 3. “读取一个文本文件”,输入流还是输出流? 4. “复制一个文件”,需要什么流? 5. “显示文件内容”,需要什么流? |
数据流的封装
数据流表示了字符或者字节数据的流动序列。
InputStream
面向字节的输入流的父类,InputStream是一个抽象类。
OutputStream
面向字节的输出流的父类,OutputStream。
Reader
面向字符的输入流的父类。
Writer
面向字符的输出流的父类。