将FileOutputStream转换为FileInputStream的最简单方法是什么(一段代码会很棒)?FileOutputStream到FileInputStream
回答
这可以帮助你:
http://ostermiller.org/convert_java_outputstream_inputstream.html
本文提到的3种可能性:
- 写完整的输出入一个字节数组,然后再
- 使用管道
- 阅读使用圆形字节缓冲区(该页面上托管的库的一部分)
仅供参考,这样做反过来(输入输出):
与Apache下议院IO简单的解决办法是:
IOUtils.copyLarge(InputStream, OutputStream)
,或者如果你只是想要复制文件:
FileUtils.copyFile(inFile,outFile);
如果你不想使用Apache Commons IO,这里是wha t时的copyLarge
方法做:
public static long copyLarge(InputStream input, OutputStream output) throws IOException
{
byte[] buffer = new byte[4096];
long count = 0L;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
链接已损坏,但您仍然可以在此处找到原始答案: https://web.archive.org/web /20110929161214/http://ostermiller.org/convert_java_outputstream_inputstream.html – GregT
如果你可以使用给出@Thomas例如,否则你可以这样做:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class FileInputOutputExample {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("in.txt");
OutputStream os = new FileOutputStream("out.txt");
int c;
while ((c = is.read()) != -1) {
System.out.print((char) c);
os.write(c);
}
is.close();
os.close();
}
}
例如从java2s.com
编辑:
由于@Thomas删除了他的答案,我只会加上参考Commons IO的方法来处理这个问题:
IOUtils.copy(InputStream is, OutputStream os)
如果您的意思是希望能够在写入内容(无需刷新到磁盘)之后读取内容,请使用ByteArrayOutputStream和ByteArrayInputStream。一旦写完ByteArrayOutputStream,就可以获取底层字节数据并使用ByteArrayInputStream将其读回。
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// do any output onto outStream you need
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
// you can read back the output with inStream now
如果你想有一个缓冲区(生产者/消费者类型的问题),考虑提供Java的NIO包缓冲区。
我收到一个FileOutputStream。我想要的是读它。
您当然无法读取OutputStream
。我想你的意思是你想从FileOutputStream
正在写入的文件中读取。我认为你也不能这样做。 FileOutputStream
似乎没有保留对正在写入的文件的引用。
你需要做的是发现什么File
或路径(String
)传递到FileOutputStream
并使用相同的File
或String
创建一个新的FileInputStream
。
我认为他可以使用FileOutputStream.getFD()来获取FileDescriptor;比围绕它建立一个FileInputStream。不知道您是否可以同时从相同的FileDescriptor读取和写入。 –
@ S.L.Barth:好的一点,我已经仔细研究过,但是错过了'FileInputStream'具有带'FileDescriptor'的构造函数的事实。 –
- 1. FileInputStream/FileOutputStream阻止?
- 2. 的FileInputStream和FileOutputStream中逐行
- 3. 方法method_name(FileInputStream,FileOutputStream)未定义类型Class_name
- 4. 的FileInputStream和FileOutputStream中类意外的行为,在进出JAVA
- 5. FileInputStream,FileOutputStream - 检查文件的具体值/线/字符串
- 6. FileOutputStream到StreamedContent
- 7. FileOutputStream webdata = new FileOutputStream();
- 8. FileInputStream未找到文件
- 9. FileInputStream java.io.FileNotFoundException
- 10. FileOutputStream错误
- 11. 嘲讽FileOutputStream
- 12. Files.newOutputStream vs FileOutputStream
- 13. FileOutputStream反射
- 14. Android:FileNotFoundException使用FileInputStream
- 15. BufferedInputStream或FileInputStream IOException
- 16. fileinputstream抛出filenotfoundexception?
- 17. FileOutputStream文件未找到错误
- 18. 使用Xerces将DOM序列化到FileOutputStream
- 19. 爪哇 - 追加到Excel文件FileOutputStream中
- 20. 将FileInputStream和FileOutputStream传递给ffmpeg进行转码(使用JAVE-Java音频视频编码)
- 21. java.io.EOFException的上FileOutputStream中
- 22. FileOutputStream真的很慢
- 23. FileOutputStream中头指针
- 24. 使用FileOutputStream的java.io.FileNotFoundException
- 25. 无法打开FileInputStream
- 26. FileInputStream是否为空?
- 27. 使用Java的FileInputStream
- 28. 显式关闭FileInputStream
- 29. 的FileInputStream VS的FileReader
- 30. 创建FileInputStream的bean
你甚至明白你在这里要求什么吗?你是什么意思“转换”?他们根本上是相反的事情;一个是阅读,另一个是写作。你是否试图在你的'FileOutputStream'中读取你正在写入的文件? –
你到底想做什么? FileOutputStream写入文件,FileInputStream读取文件。我看不出前者如何转化为后者。 –
我收到一个FileOutputStream。我想要的是读它。 – Pen