1. 概述
在本快速教程中,我们将展示如何将File转换为InputStream-首先使用纯Java,然后使用Guava和Apache Commons IO库。
2. 使用Java转换
我们可以使用Java的IO包将一个File转换为不同的InputStream。
2.1 FileInputStream
让我们从第一个也是最简单的开始-使用FileInputStream:
@Test
public void givenUsingPlainJava_whenConvertingFileToInputStream_thenCorrect() throws IOException {
File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = new FileInputStream(initialFile);
}
2.2 DataInputStream
让我们看看另一种方法,我们可以使用DataInputStream从文件中读取二进制或原始数据:
@Test
public final void givenUsingPlainJava_whenConvertingFileToDataInputStream_thenCorrect() throws IOException {
final File initialFile = new File("src/test/resources/sample.txt");
final InputStream targetStream = new DataInputStream(new FileInputStream(initialFile));
}
2.3 SequenceInputStream
最后,让我们看看如何使用SequenceInputStream将两个文件的输入流拼接到单个InputStream:
@Test
public final void givenUsingPlainJava_whenConvertingFileToSequenceInputStream_thenCorrect() throws IOException {
final File initialFile = new File("src/test/resources/sample.txt");
final File anotherFile = new File("src/test/resources/anothersample.txt");
final InputStream targetStream = new FileInputStream(initialFile);
final InputStream anotherTargetStream = new FileInputStream(anotherFile);
InputStream sequenceTargetStream = new SequenceInputStream(targetStream, anotherTargetStream);
}
请注意,为了清晰起见,我们没有关闭这些示例中的结果流。
3. 使用Guava转换
接下来,让我们看看使用中间ByteSource的Guava解决方案:
@Test
public void givenUsingGuava_whenConvertingFileToInputStream_thenCorrect() throws IOException {
File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = Files.asByteSource(initialFile).openStream();
}
4. 使用Commons IO进行转换
最后,让我们看一下使用Apache Commons IO的解决方案:
@Test
public void givenUsingCommonsIO_whenConvertingFileToInputStream_thenCorrect()
throws IOException {
File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = FileUtils.openInputStream(initialFile);
}
就这样,我们有了从Java文件打开流的3种简单干净的解决方案。
5. 总结
在本文中,我们探讨了使用不同的库将File转换为InputStream的各种方法。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章
