从同一个FileInputStream中读取字符串和二进制文件是一个常见的需求。要实现这个功能,可以使用Java的IO流来读取文件。
首先,需要创建一个FileInputStream对象,并将其指向要读取的文件。然后,可以使用InputStreamReader和BufferedReader来读取文件中的字符串。对于二进制文件,可以使用FileInputStream直接读取字节流。
以下是一个示例代码,演示如何从同一个FileInputStream中读取字符串和二进制文件:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class ReadFile {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("example.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
// 读取字符串
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
// 读取二进制文件
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
// 处理字节流
}
// 关闭资源
br.close();
fis.close();
}
}
在这个示例中,我们首先创建了一个FileInputStream对象,并将其指向一个名为"example.txt"的文件。然后,我们使用InputStreamReader和BufferedReader来读取文件中的字符串。接下来,我们使用FileInputStream直接读取字节流,并将其存储在一个字节数组中。最后,我们关闭了资源。
需要注意的是,在读取字节流时,我们使用的是FileInputStream对象,而不是InputStreamReader和BufferedReader对象。这是因为字节流和字符流是两种不同的流,它们不能混合使用。如果需要同时读取字符串和二进制文件,需要分别使用不同的流来读取。
领取专属 10元无门槛券
手把手带您无忧上云