在Java中,java.io是一个包(package),它提供了用于处理输入和输出的类和接口。该包包含了许多类,用于读取和写入数据流、操作文件、处理字符和字节等操作。
以下是一些常见的java.io包中类的介绍:
InputStream和OutputStream:抽象类,用于读取和写入字节流。它们是字节输入和输出的基本类,提供了各种方法用于从输入流读取数据和向输出流写入数据。
File:表示文件或目录路径的抽象类。它提供了创建、删除、重命名、检查文件或目录属性等操作的方法。
FileInputStream和FileOutputStream:用于读取和写入文件的字节流。它们继承自InputStream和OutputStream,并提供了一些额外的方法,用于打开和操作文件。
Reader和Writer:抽象类,用于读取和写入字符流。它们是字符输入和输出的基本类,提供了各种方法用于从输入流读取字符和向输出流写入字符。
FileReader和FileWriter:用于读取和写入文件的字符流。它们继承自Reader和Writer,并提供了一些额外的方法,用于打开和操作文件。
BufferedReader和BufferedWriter:提供了缓冲功能的字符流处理类。它们可以提高读取和写入的效率,通过缓冲数据减少了与底层流的交互次数。
InputStreamReader和OutputStreamWriter:用于将字节流转换为字符流和将字符流转换为字节流的类。它们提供了字符流和字节流之间的桥梁,可以指定字符编码来进行转换。
PrintStream和PrintWriter:提供了打印格式化文本的功能。它们可以方便地将各种数据类型转换为字符串并输出到输出流。
这只是java.io包中一些常见类的简要介绍。在实际使用中,你可能会用到其他类和接口,以满足特定的输入输出需求。建议查阅Java官方文档或其他参考资料,以获取更详细的信息和用法示例。
当涉及到java.io包中的各个类时,以下是每个类的详细使用方法和示例:
InputStream和OutputStream:
InputStream和OutputStream是抽象类,无法直接实例化。你需要使用它们的具体子类,例如FileInputStream和FileOutputStream来处理字节流。以下是使用示例:
读取文件并将内容写入另一个文件:
try (FileInputStream fis = new FileInputStream("source.txt");
FileOutputStream fos = new FileOutputStream("destination.txt")) {
int byteRead;
while ((byteRead = fis.read()) != -1) {
fos.write(byteRead);
}
} catch (IOException e) {
e.printStackTrace();
}
File:
File类用于操作文件和目录。以下是使用示例:
检查文件是否存在并获取文件信息:
File file = new File("path/to/file.txt");
boolean exists = file.exists();
if (exists) {
boolean isDirectory = file.isDirectory();
long size = file.length();
String absolutePath = file.getAbsolutePath();
// ...
}
创建目录和文件:
File directory = new File("path/to/directory");
boolean success = directory.mkdirs(); // 创建目录,包括父目录
File file = new File("path/to/file.txt");
boolean success = file.createNewFile(); // 创建文件
FileInputStream和FileOutputStream:
FileInputStream和FileOutputStream类用于读取和写入文件的字节流。以下是使用示例:
读取文件并打印内容:
try (FileInputStream fis = new FileInputStream("file.txt")) {
int byteRead;
while ((byteRead = fis.read()) != -1) {
System.out.print((char) byteRead);
}
} catch (IOException e) {
e.printStackTrace();
}
写入数据到文件:
try (FileOutputStream fos = new FileOutputStream("file.txt")) {
String data = "Hello, World!";
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
Reader和Writer:
Reader和Writer是抽象类,用于读取和写入字符流。以下是使用示例:
读取文件并打印内容:
try (FileReader reader = new FileReader("file.txt")) {
int charRead;
while ((charRead = reader.read()) != -1) {
System.out.print((char) charRead);
}
} catch (IOException e) {
e.printStackTrace();
}
写入数据到文件:
try (FileWriter writer = new FileWriter("file.txt")) {
String data = "Hello, World!";
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader和BufferedWriter:
BufferedReader和BufferedWriter类提供了带有缓冲区的字符流处理。以下是使用示例:
读取文件并打印内容:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
写入数据到文件:
try (BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"))) {
String data = "Hello, World!";
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
逐行读取文件并打印内容:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
逐行写入数据到文件:
try (BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"))) {
String[] lines = {"Line 1", "Line 2", "Line 3"};
for (String line : lines) {
writer.write(line);
writer.newLine(); // 写入换行符
}
} catch (IOException e) {
e.printStackTrace();
}
InputStreamReader和OutputStreamWriter:
InputStreamReader和OutputStreamWriter类用于字节流和字符流之间的转换。以下是使用示例:
从文件读取字符并写入到另一个文件:
try (InputStreamReader isr = new InputStreamReader(new FileInputStream("source.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("destination.txt"))) {
int charRead;
while ((charRead = isr.read()) != -1) {
osw.write(charRead);
}
} catch (IOException e) {
e.printStackTrace();
}
从文件读取字符并写入到另一个文件(指定字符编码):
try (InputStreamReader isr = new InputStreamReader(new FileInputStream("source.txt"), "UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("destination.txt"), "UTF-8")) {
int charRead;
while ((charRead = isr.read()) != -1) {
osw.write(charRead);
}
} catch (IOException e) {
e.printStackTrace();
}
PrintStream和PrintWriter:
PrintStream和PrintWriter类提供了方便的打印和格式化输出功能。以下是使用示例:
使用PrintStream打印到控制台:
try (PrintStream ps = new PrintStream(System.out)) {
ps.println("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
使用`PrintWriter`写入到文件:
try (PrintWriter writer = new PrintWriter(new FileWriter("file.txt"))) {
writer.println("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
使用PrintStream进行格式化输出:
try (PrintStream ps = new PrintStream(System.out)) {
String name = "Alice";
int age = 25;
double salary = 5000.0;
ps.printf("Name: %s, Age: %d, Salary: %.2f", name, age, salary);
} catch (IOException e) {
e.printStackTrace();
}
使用PrintWriter写入到文件(追加模式):
try (PrintWriter writer = new PrintWriter(new FileWriter("file.txt", true))) {
writer.println("This line will be appended to the file.");
} catch (IOException e) {
e.printStackTrace();
}