假设我有一个字节数组需要转换为char数组并通过网络发送。 例如
char[] sometoken = String( myByteArray ).toCharArray();
myMethodToSendByteArrayUsingTCPSocket( sometoken );
myByteArray是ASN.1编码(是kerberos TGT)。在接收端,我正在使用此代码来编写" sometoken"到文件。
try{
fileName = .....;
fs = new FileOutputStream(fileName) ;
fs.write( new String( sometoken ).getBytes() );
fs.flush();
fs.close();
}catch(IOException e){
e.printStackTrace();
}
请问,我是否应该使用DataOutputStream写入文件以获得可靠性?另外,我认为需要为getBytes()指定ASN.1编码。是getBytes(" ASN.1")?
感谢。
答案 0 :(得分:2)
这在现实世界中一直发生。无论何时在浏览器中查看图像,您都会查看通过套接字发送的字符串数据字符串。只需BASE64对您的数据进行编码,将字节转换为“可打印”的ASCII文本。然后发送它,并在远端反转。
答案 1 :(得分:0)
您可以使用“CP437”字符集来往返数据,而不会丢失数据。它有256个字符,每个字符一个字节。正如其他人指出的那样,双方必须达成一致。
另一方面,byteArray确实应该发送。由于您要先保存到文件,只需使用java.nio.files.Files.write(Path path, byte[] bytes, OpenOption... options)。