File

1、File类的一个对象,代表文件或者一个文件目录(俗称文件夹)

  • File file = new File(“a.txt”);

2、路径分割符:

  • Windows下的分隔符:\和Linux下/可以使用File.separatorChar替代

3、关于File创建实例的3钟方式:

  1. File(String filePath);
  2. File(String parentPath,String childPath);
  3. File(File parentFile,String childPath);

代码:File创建实例的3种方法

4、File的方法:

  • LastModified():获取最后一次修改的时间,毫秒值
  • list():获取指定目录下所有文件或者文件目录的名称数组(获取的是文件名)
  • listFiles():获取指定目录下所有的文件或者文件目录的File数组(获取的是绝对路径)
  • renameTo(File file):这个方法表示将文件剪切,并且可以修改名称为file。
  • isDirectory():判断是否是目录
  • isFile():判断这个是否是文件
  • exists():判断是否存在
  • createNewFile():创建一个新的文件
  • delete():删除一个文件
  • mkdir():创建文件目录,如果此文件存在不创建,只创建单个文件
  • mkdirs():创建文件目录,如果此文件目录存在不创建,如果不存在就创建该目录。

代码:文件方法的使用

5、IO流以操作数据单位不同分为:

  1. 字节流(除文本之外可以进行读取写入,文本不能再控制台输出读取。)
  2. 字符流(只有文本可以进行读取写入)

6、流的分类
File
7、流的体系结构
File8、字符的读取写入:

  1. FileReader(File file):表示创建一个文件的读取对象。可以通过read()读取数据。
  2. FileWriter:输出操作,对应的File可以不存在,如果不存在,在输出的过程中,会自动创建此文件,如果存在,就是对该文件进行操作。
          FileWriter(File file) : 表示对原有file的覆盖操作,
          FileWriter(File file,true): 表示对原有file的追加内容

代码:字符流读取和写入代码

9、字节流:

  • FileInputStream:输入流,从文件中读取数据到控制台
  • FileOutputStream:输出流,从控制台输出数据到文件。

代码:字节流的使用

10、转换流:提供字符流和字节流之间的转换

  • InputStreamReader:将一个字节的输入流转换为字符的输入流
  • OutputStreamWriter:讲一个字符的输出流转换为字节的输出流。

File代码:转换流代码

11、标准的输入、输出流

  • System.in:标准的输入流,默认从键盘输入
  • System.out:标准的输出流,默认从控制台输出
  • System类的setIn(InputStream is ) / setOut(PrintStream ps) 方式重新指定输入和输出流
  • 打印流:将原本输出到控制台的信息,重新定义位置到其它地方。
  • PrintStream
  • PrintWriter

代码:打印流和输入流的代码

12、数据流(数据流写入文件,只能使用数据流读取文件。)

  • DataInputStream 和 DataOutputStream
  • 作用:用于读取或写出基本数据类型的变量或字符串。

代码:数据流读取和写入

13、对象流:用于存储和读取基本数据类型数据或对象的处理流,它的强大之处在于可以将java中的对象写入到数据源中,也能把对象从数据源中还原回来。实现对象流的对象条件要满足序列化。

  13.1、对象流的序列化:

  • 对象序列化机制:允许吧内存中的java对象转换成平台无关的二进制流,从而输到另一个网络节点。当其他程序获取了这种二进制流,就可以恢复成原来的java对象。
  • 序列化的好处在于可将任何实现了Serializable接口的对象转化为字节数据,使其在保存和传输时可被还原。

  13.2、序列化需要

  • 1、继承Serializable,
  • 2、同时要定义一个默认的属性:public static final long serialVersionUID = 12456; 数字可以自己随便定义。
  • 3、除了当前的类需要实现Serializable接口外,还必须保证其内部所有属性也必须是可序列化的。(默认情况下,基本数据类型可序列化)

  13.3、对象流的方法:

  • ObjectInputStream:
  • ObjectOutputStream:

代码:对象流使用

14、随机存取文件流:
  RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口
  RandomAccessFile既可以作为一个输入流,又可以作为一个输出流。

14.1、public RandomAccessFile(File,String mode);

  mode表示访问模式:

  • r:只读方式打开
  • rw:打开以便读取和写入
  • rwd:打开以便读取和写入,同步文件内容的更新(发送异常也会保存发生异常前的信息)
  • rws:大爱以便读取和写入;同步文件内容和元数据的更新。

14.2、方法:

  • seek(n):把指针放到index=n的位置

代码:随机存取文件流