-2

数组 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();
4

2 回答 2

8

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

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

OutputStream os = new FileOutputStream("out1.jpg");
try {
    os.write(getPhoto());
} finally {
    os.close();
}
于 2013-02-07T18:28:10.980 回答
0

不要将二进制数据加载到字符串中。如果不是 tetx,就不要使用 String

于 2013-02-07T18:28:28.690 回答