Java:如何编写二进制文件?

我已经做了几年的网络编程,从那时起我就没有为桌面应用程序做过任何编程,而且我已经忘记了很多东西。 如果这太简单了,请耐心等待。

现在我有这种情况:
我试图在文件中存储一些哈希的单词。 我想我应该使用二进制文件(如果我错了请纠正我)。 但我不知道如何将文字写入文件。 我尝试了很多方法,但是当我读回文件并尝试解密这些文字时,我得到BadPaddingException

有没有人知道如何将文字写入文件?

PS:我使用这段代码加密/解密单词(我从另一个StackOverflow线程获得它,只做了一些修改):

 public static byte[] encrypt(String property) throws GeneralSecurityException, UnsupportedEncodingException { SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey key = keyFactory.generateSecret(new PBEKeySpec(password)); Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES"); pbeCipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(salt, 20)); return pbeCipher.doFinal(property.getBytes("UTF-8")); } public static String decrypt(byte[] property) throws GeneralSecurityException, IOException { SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey key = keyFactory.generateSecret(new PBEKeySpec(password)); Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES"); pbeCipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(salt, 20)); return new String(pbeCipher.doFinal(property)); } 

好吧,只需使用FileInputStreamFileOutputStream =)

样本写作:

 // encrypted data in array byte[] data = ... FileOutputStream fos = ... fos.write(data, 0, data.length); fos.flush(); fos.close(); 

样本阅读:

 File inputFile = new File(filePath); byte[] data = new byte[inputFile.length()]; FileInputStream fis = new FileInputStream(inputFile); fis.read(data, 0, data.length); fis.close(); 

上面的代码假定一个文件包含单个加密项。 如果您需要在单个文件中保留多个项目,则需要为此设计一些格式方案。 例如,您可以在数据本身之前将加密数据中的字节数存储为2个字节。 每个项目2个字节表示加密项目不能超过2 ^ 16个字节。 当然,您可以使用4个字节的长度。

保存为文本文档对我来说似乎更有意义,数据已经是一个所以没有必要将它转换为byte[] ,如果你需要从文件中读取将非常方便。 除非你从网上保存它并且它已经通过套接字作为byte[] 。 我知道它说不提供你的意见,但它严格意义上的问题,这是你的问题的唯一部分没有回答前两个回答