目录
- Java IO 概述
- Java 流(Stream)概述
- Java 文件(File)操作
- Java 字节流(InputStream 和 OutputStream)
- Java 字符流(Reader 和 Writer)
- 缓冲流(BufferedStream)
- 对象流(ObjectStream)
- NIO(New IO)
- 参考资料
- 出站链接
1. Java IO 概述
Java 的 IO(输入/输出)系统用于处理数据的输入和输出操作,涉及文件、网络、内存等。Java 提供了 传统 IO(java.io 包) 和 NIO(java.nio 包) 两种 IO 机制。
2. Java 流(Stream)概述
流(Stream) 是 IO 操作的核心概念,它表示数据的流动方向:
- 输入流(InputStream/Reader):从外部数据源读取数据到 Java 程序。
- 输出流(OutputStream/Writer):从 Java 程序写入数据到外部目标。
流的分类:
类型 | 方向 | 字节/字符 | 主要类 |
---|---|---|---|
字节输入流 | 读取 | 字节 | InputStream, FileInputStream |
字节输出流 | 写入 | 字节 | OutputStream, FileOutputStream |
字符输入流 | 读取 | 字符 | Reader, FileReader |
字符输出流 | 写入 | 字符 | Writer, FileWriter |
3. Java 文件(File)操作
创建文件
import java.io.File;
import java.io.IOException;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
try {
if (file.createNewFile()) {
System.out.println("文件创建成功: " + file.getAbsolutePath());
} else {
System.out.println("文件已存在。");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
删除文件
File file = new File("example.txt");
if (file.delete()) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
获取文件信息
File file = new File("example.txt");
System.out.println("文件路径: " + file.getAbsolutePath());
System.out.println("是否可读: " + file.canRead());
System.out.println("是否可写: " + file.canWrite());
System.out.println("文件大小: " + file.length() + " 字节");
4. Java 字节流(InputStream 和 OutputStream)
文件输入流(FileInputStream)
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件输出流(FileOutputStream)
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
String text = "Hello, Java IO!";
fos.write(text.getBytes());
System.out.println("数据写入成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. Java 字符流(Reader 和 Writer)
文件读取(FileReader)
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("example.txt")) {
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件写入(FileWriter)
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hello, FileWriter!");
System.out.println("数据写入完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
6. 缓冲流(BufferedStream)
import java.io.*;
public class BufferedExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
7. 对象流(ObjectStream)
import java.io.*;
class Person implements Serializable {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class ObjectStreamExample {
public static void main(String[] args) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
oos.writeObject(new Person("Alice", 25));
} catch (IOException e) {
e.printStackTrace();
}
}
}
8. NIO(New IO)
import java.nio.file.*;
public class NIOExample {
public static void main(String[] args) throws Exception {
Path path = Paths.get("example.txt");
Files.write(path, "Hello, NIO!".getBytes());
System.out.println(new String(Files.readAllBytes(path)));
}
}
发表回复