从byte []到String的精确转换

时间:2013-02-07 18:26:15

标签: java string file bytearray

数组byte []包含照片的完美逐字节副本,当我尝试将byte []转换为String并使用它写入文件时,它会失败。

我需要转换为字符串,以便稍后通过套接字发送。

我的每个连接的处理程序都有一个Socket(sock),PrintWriter(out)和BufferedReader(in),然后我将Socket与PrintWriter和BufferedReader相关联。有了这个,我发送和接收字符串out.println和in.readLine。

我该如何解决这个问题?

测试代码:

// getPhoto() returns byte[]
String photo = new String(getPhoto());

// Create file
DataOutputStream os = new DataOutputStream(new FileOutputStream("out1.jpg"));
// This makes imperfect copy of the photo
os.writeBytes(photo);

//This works perfectly basically it copies the image through byte[]
//os.write(getPhoto());

// Close the output stream
os.close();

2 个答案:

答案 0 :(得分:8)

  

数组byte []包含照片的完美逐字节副本,当我尝试将byte []转换为String并使用它写入文件时,它会失败。

是。那是因为字符串用于文本,而照片不是文本。只是不要将它转换为字符串。您不需要DataOutputStream

OutputStream os = new FileOutputStream("out1.jpg");
try {
    os.write(getPhoto());
} finally {
    os.close();
}

答案 1 :(得分:0)

不要将二进制数据加载到String中。如果它不是tetx,则不要使用String