繁体   English   中英

如何可靠地写入字节数组

[英]How to write byte array reliably

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

谢谢。

在现实世界中,这种情况一直存在。 每当您在浏览器中查看图像时,都在查看通过套接字发送的一串字节数据。 只需BASE64即可对您的数据进行编码,这会将字节转换为“可打印的” ASCII文本。 然后传输,并在远端反向。

您可以使用“ CP437”字符集来回传输数据而不会丢失数据。 它具有256个字符,每个字符一个字节。 正如其他人指出的那样,双方都必须同意。

另一方面,byteArray实际上是应该发送的内容。 而且由于您首先要保存到文件,所以只需使用java.nio.files.Files.write(路径,byte [] bytes,OpenOption ... options)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM