Java中数据流二进制转换主要分为文件流转换和对象序列化两种场景,具体方法如下:
一、文件流二进制转换
使用`FileInputStream`读取文件内容,通过字节数组缓存数据。例如:
```java
FileInputStream fis = new FileInputStream("input.txt");
byte[] buffer = new byte;
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
// 处理buffer数据
}
fis.close();
```
将二进制数据写入文件
使用`FileOutputStream`或`ByteArrayOutputStream`将数据写入文件。例如:
```java
FileOutputStream fos = new FileOutputStream("output.dat");
fos.write(buffer, 0, bytesRead);
fos.close();
```
或
```java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(buffer, 0, bytesRead);
byte[] binaryData = baos.toByteArray();
// 将binaryData写入文件
```
二、对象序列化为二进制流
定义可序列化类
需实现`Serializable`接口的类才能被序列化。例如:
```java
public class Person implements Serializable {
private String name;
private int age;
// 构造函数、getter和setter省略
}
```
使用ObjectOutputStream序列化对象
```java
FileOutputStream fos = new FileOutputStream("person.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(person);
oos.close();
```
反序列化对象
使用`ObjectInputStream`读取二进制流并恢复对象。例如:
```java
FileInputStream fis = new FileInputStream("person.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
Person person = (Person) ois.readObject();
ois.close();
```
三、其他常见方法
基本数据类型转换: 使用`Integer.toBinaryString()`等方法将整数转换为二进制字符串。 NIO批量转换
以上方法可根据具体需求选择,文件流转换适用于文本或二进制文件处理,对象序列化则用于持久化复杂数据结构。