Java输入输出流:10个必知的函数
Java输入输出流在文件读写、网络传输中都有广泛应用。本文将介绍10个在实际开发中经常使用的Java输入输出流函数,让你快速上手Java输入输出流。
## 1. FileInputStream
FileInputStream 类可以用来从文件系统中的文件读取数据。示例代码如下:
try (FileInputStream fis = new FileInputStream("test.txt")) {
byte[] content = fis.readAllBytes();
System.out.println(new String(content));
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以读取文件 test.txt 所有数据,并输出到控制台上。
## 2. FileOutputStream
FileOutputStream 类可以用来往文件系统中写入数据。示例代码如下:
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
String message = "Hello, world!";
fos.write(message.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以将字符串 Hello, world! 写入到文件 output.txt 中。
## 3. InputStreamReader
InputStreamReader 类将字节流转换为字符流,并且支持指定字符编码。示例代码如下:
try (FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8")) {
char[] buffer = new char[1024];
int len = isr.read(buffer);
System.out.println(new String(buffer, 0, len));
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以读取文件 test.txt 中的数据,并将其转换为字符流进行输出。
## 4. OutputStreamWriter
OutputStreamWriter 类将字符流转换为字节流,并且支持指定字符编码。示例代码如下:
try (FileOutputStream fos = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8")) {
String message = "你好,世界!";
osw.write(message);
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以将字符串 你好,世界! 写入到文件 output.txt 中。
## 5. BufferedReader
BufferedReader 类可以提高文件读取效率,并且支持一次读取一行。示例代码如下:
try (FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以一次读取文件 test.txt 中的一行数据,并输出到控制台上。
## 6. BufferedWriter
BufferedWriter 类可以提高文件写入效率,并且支持一次写入一行。示例代码如下:
try (FileOutputStream fos = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw)) {
String message = "你好,世界!";
bw.write(message);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以将字符串 你好,世界! 写入到文件 output.txt 中,并在字符串后面添加一个换行符。
## 7. DataInputStream
DataInputStream 类可以读取 Java 基本数据类型(如 int、long、float、double、boolean 等)和字符串类型。示例代码如下:
try (FileInputStream fis = new FileInputStream("data.bin");
DataInputStream dis = new DataInputStream(fis)) {
int a = dis.readInt();
long b = dis.readLong();
float c = dis.readFloat();
double d = dis.readDouble();
boolean e = dis.readBoolean();
String f = dis.readUTF();
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以从二进制文件 data.bin 中读取不同的基本数据类型和字符串类型,并输出到控制台上。
## 8. DataOutputStream
DataOutputStream 类可以将 Java 基本数据类型和字符串类型写入到二进制文件中。示例代码如下:
try (FileOutputStream fos = new FileOutputStream("data.bin");
DataOutputStream dos = new DataOutputStream(fos)) {
int a = 123;
long b = 456L;
float c = 1.23f;
double d = 4.56;
boolean e = true;
String f = "Hello, world!";
dos.writeInt(a);
dos.writeLong(b);
dos.writeFloat(c);
dos.writeDouble(d);
dos.writeBoolean(e);
dos.writeUTF(f);
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以将不同的基本数据类型和字符串类型写入到二进制文件 data.bin 中。
## 9. InputStreamReader
InputStreamReader 类将字节流转换为字符流,并且支持指定字符编码。示例代码如下:
try (FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8")) {
char[] buffer = new char[1024];
int len = isr.read(buffer);
System.out.println(new String(buffer, 0, len));
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以读取文件 test.txt 中的数据,并将其转换为字符流进行输出。
## 10. ObjectOutputStream
ObjectOutputStream 类可以将 Java 对象序列化到文件中。示例代码如下:
class Person implements Serializable {
private static final long serialVersionUID = 1L;
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
try (FileOutputStream fos = new FileOutputStream("person.bin");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
Person person = new Person("Tom", 20);
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
上述代码可以将 Java 对象 Person 序列化并写入到二进制文件 person.bin 中。
以上10个函数是在 Java 输入输出流中经常使用的,可以帮助你进行文件读写和网络传输的开发。通过掌握这些函数,你可以更好地理解 Java 输入输出流的运作机制,并在实际开发中进行更加灵活高效的应用。
