
Java I/O(输入输出)流是用于处理输入和输出的类的集合,它们在java.io包中。I/O流分为两大类:字节流(用于处理原始二进制数据)和字符流(用于处理文本数据)。
java.io包中,InputStream和OutputStream是所有字节流类的基类。java.io包中,Reader和Writer是所有字符流类的基类。使用FileInputStream可以读取文件的字节数据。
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int i;
while ((i = fis.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}使用FileReader可以读取文件的字符数据。
import java.io.FileReader;
import java.io.IOException;
public class CharStreamReadExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("example.txt")) {
int i;
while ((i = fr.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}使用FileOutputStream可以写入字节数据到文件。
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamWriteExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
fos.write(data.getBytes()); // 将字符串转换为字节数据并写入
} catch (IOException e) {
e.printStackTrace();
}
}
}使用FileWriter可以写入字符数据到文件。
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamWriteExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileWriter fw = new FileWriter("example.txt")) {
fw.write(data); // 直接写入字符串
} catch (IOException e) {
e.printStackTrace();
}
}
}字节流和字符流是Java I/O流的两种基本形式,它们分别以字节和字符为单位进行数据的读取和写入。字节流主要用于处理原始二进制数据,而字符流主要用于处理文本数据。在进行文件读写操作时,应根据数据的类型选择合适的流类。正确地使用I/O流可以帮助我们高效地进行数据的输入和输出操作。