如何可靠地编写字节数组

时间:2014-07-17 15:39:10

标签: java asn.1 dataoutputstream

假设我有一个字节数组需要转换为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")?

感谢。

2 个答案:

答案 0 :(得分:2)

这在现实世界中一直发生。无论何时在浏览器中查看图像,您都会查看通过套接字发送的字符串数据字符串。只需BASE64对您的数据进行编码,将字节转换为“可打印”的ASCII文本。然后发送它,并在远端反转。

答案 1 :(得分:0)

您可以使用“CP437”字符集来往返数据,而不会丢失数据。它有256个字符,每个字符一个字节。正如其他人指出的那样,双方必须达成一致。

另一方面,byteArray确实应该发送。由于您要先保存到文件,只需使用java.nio.files.Files.write(Path path, byte[] bytes, OpenOption... options)