在Java中如何接收通过C#代码发送的文件流
byte[] data = File.ReadAllBytes(Utils.MrFile.PathName);
pdfFile.data = BitConverter.ToString(data);
通过以上c#代码,发送流,在java中如何接收?
// 获取从C#发送的十六进制字节数组字符串
String hexData = "AB-CD-EF-01-23";
// 移除连字符,得到十六进制字节数组的字符串数组
String[] byteStrings = hexData.split("-");
// 创建一个字节数组来存储解析后的数据
byte[] data = new byte[byteStrings.length];
// 将每个字节的字符串转换为字节值
for (int i = 0; i < byteStrings.length; i++) {
// 解析为十六进制字节值
byte b = (byte) Integer.parseInt(byteStrings[i], 16);
data[i] = b;
}
// 现在你可以使用字节数组 'data' 进行进一步处理
请注意,上述代码仅演示了如何将由 BitConverter.ToString()
方法转换的十六进制字节数组字符串还原为字节数组。实际应用中,你可能需要根据具体的网络通信协议进行数据传输和接收。
通过字节数组转文件:
public static File bytesToFile(byte[] bytes, String outPath, String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
File dir = new File(outPath);
if (!dir.exists() && dir.isDirectory()) { //判断文件目录是否存在
dir.mkdirs();
}
file = new File(outPath + File.separator + fileName);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return file;
}