Java可以使用字符流读写非文本文件,具体的实现方式如下:
1.使用InputStreamReader和OutputStreamWriter进行字符集转换
InputStreamReader和OutputStreamWriter类可以将字节流转换成字符流,从而能够读写文本文件或者将字节流读写成文本文件。但是,它们也可以用于读写非文本文件,只需要在构造函数中指定正确的字符集即可。
示例1:使用InputStreamReader读取图片文件
import java.io.*;
public class ReadImageFile {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("image.jpg");
InputStreamReader isr = new InputStreamReader(fis, "ISO-8859-1");
int data = isr.read();
while(data != -1) {
System.out.print((char)data);
data = isr.read();
}
isr.close();
}
}
示例2:使用OutputStreamWriter将非文本文件写入字节流
import java.io.*;
public class WriteBinaryFile {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("binary.dat");
OutputStreamWriter osw = new OutputStreamWriter(fos, "ISO-8859-1");
osw.write(65); // 写入一个字节的数据
osw.write("Hello, world!"); // 写入字符串
osw.close();
}
}
2.使用RandomAccessFile进行读写
RandomAccessFile类可以随意定位文件中的指针位置,以便读取或者写入数据。它包含了可以读写基础数据类型的方法,可以用于读写非文本文件。
示例3:使用RandomAccessFile读取二进制文件
import java.io.*;
public class ReadBinaryFile {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("binary.dat", "r");
byte[] buffer = new byte[1024];
int len = raf.read(buffer);
while(len != -1) {
System.out.print(new String(buffer, 0, len, "ISO-8859-1"));
len = raf.read(buffer);
}
raf.close();
}
}
示例4:使用RandomAccessFile写入非文本文件
import java.io.*;
public class WriteBinaryFile {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("binary.dat", "rw");
byte[] data = {'H', 'e', 'l', 'l', 'o', ','};
raf.write(data);
raf.writeInt(12345);
raf.close();
}
}
以上是Java如何使用字符流读写非文本文件的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java如何使用字符流读写非文本文件 - Python技术站