我正在一个非常旧的 Java 应用程序中编写一个 csv 文件,所以我不能使用所有新的 Java 8 流。
Writer writer = new OutputStreamWriter(new FileOutputStream("file.csv"));
writer.append("data,");
writer.append("data,");
...
然后我需要将 writer 对象转换为 ByteArrayInputStream。我该怎么做 ?
提前致谢。此致。
我正在一个非常旧的 Java 应用程序中编写一个 csv 文件,所以我不能使用所有新的 Java 8 流。
Writer writer = new OutputStreamWriter(new FileOutputStream("file.csv"));
writer.append("data,");
writer.append("data,");
...
然后我需要将 writer 对象转换为 ByteArrayInputStream。我该怎么做 ?
提前致谢。此致。
这取决于您要执行的操作。
如果您将一堆数据写入文件然后读取文件,您将需要使用FileInputStream代替您的ByteArrayInputStream。
如果您想将一堆数据写入字节数组,那么您应该看看使用ByteArrayOutputStream。如果您随后需要将字节数组作为ByteArrayInputStream读取,您可以将 ByteArrayOutputStream 传递到输入流中,如下所示。请记住,这只适用于写作和阅读。你不能像缓冲区一样使用它。
//Create output stream
ByteArrayOutputStream out = new ByteArrayOutputStream();
//Create Writer
Writer writer = new OutputStreamWriter(out);
//Write stuff
...
//Close writer
writer.close();
//Create input stream using the byte array from out as input.
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
简短的回答:你不能。
AByteArrayInputStream
只是不能从 a 分配OutputStreamWriter
。
由于您可能在写入之后,您可以将文件读回 a byte[]
,然后ByteArrayInputStream
用它构造 a :
File file = new File("S:\\Test.java");
FileInputStream fis = new FileInputStream(file);
byte[] content = new byte[(int) file.length()];
fis.read(content,0,content.length);
ByteArrayInputStream bais = new ByteArrayInputStream(content);