Java基础学习第12天:输入输出流与文件操作
IO流概述与分类
Java中的IO流是用来进行输入和输出操作的一系列类的总称。它们允许程序与外部世界(如文件、网络、控制台等)进行数据交换。IO流可以分为以下几类:
按操作类型分类
类型 | 描述 |
---|---|
输入流 | 从数据源读取数据,如文件、网络等。 |
输出流 | 将数据写入目的地,如文件、网络等。 |
按操作数据类型分类
类型 | 描述 |
---|---|
字节流 | 以字节为单位进行数据的输入输出,如FileInputStream 、FileOutputStream 。 |
字符流 | 以字符为单位进行数据的输入输出,如FileReader 、FileWriter 。 |
对象流 | 可以对Java对象进行直接的输入输出,如ObjectInputStream 、ObjectOutputStream 。 |
字节流
FileInputStream
FileInputStream
是用于从文件中读取字节数据的类。
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("example.txt");
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
FileOutputStream
FileOutputStream
是用于向文件写入字节数据的类。
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("example.txt");
String data = "Hello, World!";
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
字符流
FileReader
FileReader
是用于从文件中读取字符数据的类。
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("example.txt");
int content;
while ((content = fr.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
FileWriter
FileWriter
是用于向文件写入字符数据的类。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("example.txt");
String data = "Hello, World!";
fw.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
文件读写操作
文件读写操作是程序中常见的功能,可以通过字节流和字符流来实现。以下是一些常见的文件读写操作:
读取文件
读取文件时,可以选择按字节或字符读取。按字节读取适用于所有类型的文件,而按字符读取适用于文本文件。
写入文件
写入文件时,同样可以选择按字节或字符写入。写入操作会覆盖文件内容,除非使用追加模式。
追加写入
FileOutputStream
和FileWriter
都提供了追加模式,可以在文件末尾追加内容。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterAppendExample {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("example.txt", true); // true表示追加模式
fw.write("\nNew line added.");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
总结
本章节详细介绍了Java中的输入输出流和文件操作。我们学习了IO流的基本概念和分类,包括字节流和字符流的区别和用途。通过实际的代码示例,我们了解了如何使用FileInputStream
、FileOutputStream
、FileReader
和FileWriter
进行文件的读写操作。这些操作是Java编程中的基础技能,掌握它们对于处理文件和数据流至关重要。通过这些知识,我们可以在实际开发中高效地进行文件操作和数据处理。