【发布时间】:2014-11-21 18:43:57
【问题描述】:
我编写了以下代码将字符串文件转换为字节数据文件。但是输入文件和输出文件是相同的。我的代码有什么问题。
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;
import java.util.stream.Stream;
public class StringToBytes {
private static void convertor(Stream<String> input) throws IOException
{
File file = new File("byteTest.txt");
BufferedOutputStream writer = new BufferedOutputStream(new FileOutputStream(file));
Iterator<String> it= input.iterator();
while (it.hasNext())
{
byte []b= it.next().getBytes();
writer.write(b);
}
writer.close();
}
public static void main(String args[]) throws IOException{
Path path= Paths.get("test.txt");
Stream<String>lines=Files.lines(path, StandardCharsets.UTF_8);
convertor(lines);
}
}
我输入文件的内容是:
San Francisco, officially the City and County of San Francisco, is the cultural center and a leading financial hub of the San Francisco Bay Area and Northern California.
The only consolidated city-county in California
我希望输出(byteTest.txt)文件有类似
[B@2dda6444
输出文件的内容与输入文件的内容相同。
【问题讨论】:
-
你所说的“文件的上下文”是什么意思——你是指文件的内容吗?如果是这样,文件是 always 字节序列......目前尚不清楚您实际想要实现的目标。此外,在不指定编码的情况下调用
String.getBytes()几乎总是一个坏主意。 -
@JonSkeet 我编辑我的解释。我的意思是内容。
-
你想要 ascii 二进制字符串表示吗? IE。 c = "1100001", g = "1100111" 并将其打印到文件中?
-
为什么您希望文件包含
[B@2dda6444?这是在字节数组上调用toString()的输出,但它并没有真正包含任何有用的信息……目前还不清楚你的最终目标是什么。 -
[B@2dda6444 只反映字符串(或字节数组)的位置而不是它的内容。
标签: java string file bytearray