1.File类

java.io.File

一个File类的对象表示一个抽象的计算机中文件或目录(文件夹)

具体方法:

file.length();//获得文件内容的长度

file.getName();//获得文件名     file.getPath();//获得文件位置

file.isHidden();//判断是否为隐藏文件     file.canRead();//判断该文件是否可读

file.canWrite();//判断该文件是否可写

file.isFile();//判断是否为文件     file.isDirectory();//判断是否为文件夹

file.exists();//判断文件是否存在     file.delete();//删除文件

//文件夹的创建

File file = new File(pathname: " ");//括号内写出该文件所在的地址

if(!file.exists()){
         file.mkdir();//创建文件夹

         //file.mkdirs();   创建多级目录(文件夹)

}

String[] files = file.list();

返回给定目录所有的子级(文件或文件夹),字符串形式

File[] files = file.list();

与之同理,但返回的是文件对象,可对其进行其他操作。

2.输入和输出

输入:把电脑上的文件读到程序中。

输出:把读取到程序中的数据,写到目标位置的操作。

输入和输出都是相对于程序来讲的。

在java语言中,提供许多可以进行读和写操作的类,我们把这些类形象的称为流。

IO流---->java提供读写文件的类。

3.IO流的分类

1.按照读取单位分类:

<1>字节流:读取时以字节为单位,这种流可以读取任何文件。

<2>字符流:以字符为单位读取

2.按照流的流向分类:

<1>输入流    <2>输出流

字节流

InputStream 和  OutputStream  抽象类

FileInputStream 实现类

//创建一个输入的管道,对接到我们要读取的文件上

FileInputStream inputStream = new FileInputStream("D:/a.txt");

//同理创建一个输出的管道

FileOutputStream outputStream = new FileOutputStream("C:/a.txt");

具体类实现:

byte[] bytes = new byte[];//储存每次读取的字节内容
int length = 0;//记录实际向数组装入的字节个数
while ((length=inputStream.read(bytes))!=-1){
    FileOutputStream outputStream = new FileOutputStream("D:/temp.txt");
    outputStream.write(bytes,0,length);//每次往后写出byte数组个字节内容,从0开始,写length个
    outputStream.close();
}
inputStream.close();

inputStream.read(bytes) 每次读byte数组个字节内容,返回值也是int,返回的是每次往数组中装入的实际字节个数,读完后返回-1.

字符流(只能读文本文件)

<1>输入流 Reander <2> 输出流 Writer

<1>InputStreamReader 转换流 把字节转为字符(FileReader实现类) 

<2>OutputStreamWriter 转换流 把字符转为字节(FileWriter实现类)

节点流和处理流(根据封装类型区分) 

节点流:

如果封装的是如文件,字符串,字符串数组等,称为节点流。

处理流:

处理流封装的是其他流对象,提供了额外功能。

缓冲字节流

其内部有一个默认长度为8192的字节数组,进行一个数据的缓存。

如图所示,该部分代码为缓冲字节流的具体实现,缓冲字节流是javaIO中用于提高字节数据读取效率的流,其核心作用是通过内存缓冲区减少直接与底层设备(如磁盘、网络)的 IO 交互次数,从而显著提高 IO 性能。

数据处理流

String s = "你好,吃了吗?";
FileOutputStream fileOutputStream = new FileOutputStream("D:/demo.txt");
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
dataOutputStream.writeUTF(s);//直接写出一个字符串
dataOutputStream.flush();
dataOutputStream.close();
FileInputStream fileInputStream = new FileInputStream("D:/demo.txt");
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
String str = dataInputStream.readUTF();//利用数据输入流直接读取一个字符串
dataInputStream.close();

在 Java IO 中,数据处理流(Data Stream) 指的是 DataInputStream 和 DataOutputStream,它们是用于读写基本数据类型(如 intdoubleboolean 等)和字符串的过滤流(需包装底层字节流使用)。其核心作用是方便地按 “数据类型” 而非字节序列读写数据,解决了基础字节流只能只能处理字节 / 字节数组 ** 的局限性。

缓冲字符流

//缓冲字符流
FileReader fileReader = new FileReader("D:/demo11.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
FileWriter fileWriter = new FileWriter("D:/demo.txt",true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
String line = "";
while ((line=bufferedReader.readLine())!=null){
    bufferedWriter.write(line);
    bufferedWriter.newLine();
}
bufferedReader.close();
bufferedWriter.flush();
bufferedWriter.close();

缓冲字符流是针对字符数据(如文本)设计的缓冲流,核心作用是:

  1. 高效读写字符:通过内存缓冲区批量处理字符,减少底层 IO 操作次数(与缓冲字节流的缓冲逻辑类似),提升文本读写性能。
  2. 直接操作字符数据:支持 Stringchar 等字符类型,无需手动将字节转换为字符(内部自动处理字符编码)。
  3. 提供便捷方法:例如 BufferedReader 的 readLine() 可一次读取一行文本,BufferedWriter 的 newLine() 可跨平台输出换行符,极大简化文本处理。

缓冲字符流与缓冲字节流的:

  • 共性:两者都通过缓冲区减少底层 IO 次数,提升读写效率。
  • 差异核心:缓冲字符流面向文本数据(处理字符,依赖编码),缓冲字节流面向二进制数据(处理字节,不依赖编码)。
  • 选择原则:处理文本用缓冲字符流(简化编码和换行处理),处理非文本(图片、视频等)用缓冲字节流(避免编码干扰)。

对象的序列化和反序列化

Java中的对象都存储在内存中,一旦程序运行结束,内存中的对象就会消失。有时,需要在程序停止时,将对象数据长久保存下来,下次启动程序时,可以继续使用。

IO中提供对象输入/输出流,这种对象操作,也称为对象序列化(输出)和反序列化(输入),反序列化也是java中创建对象的方式之一。

当一个类需要被序列化(对象输出)时,该类需要实现Serializeable接口,该类可以为我们自动生成一个唯一编号,这样在类信息发生改变时,也能保证正常的运行。

以下是具体的实现:

该程序运用了对象序列化的操作,将Car类的信息储存在了一个txt文件中。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐