2017-04-02 138 views
0

如何将字符串写入二进制文件? 我已经尝试了很多,但我的每一个文件显示为纯文本文件的时间..Swift 3将字符串写入二进制文件

我不感兴趣的plist文件..

  string = String(data: data, encoding: String.Encoding.utf8)!; 
      var buffer = [UInt8](string.utf8); 

      var f = fopen("newdata.dat", "w"); 
      let success = fwrite(buffer, MemoryLayout<UInt8>.size, buffer.count, f); 
      fsync(fileno(f)); 
      fclose(f); 
      print("success: \(success)"); 
+0

可能[this](http://stackoverflow.com/a/33814414/4041795)答案可能帮助你吗? – Montmons

+1

将'data'直接写入磁盘有什么不对? – vadian

+0

@ SB87谢谢,但不幸的是,我发布这个问题之前,我已经尝试过。我还指定我对plist文件不感兴趣.. – user3390652

回答

0

你明确的数据之间的差异文本?纯文本文件是当文本编辑器解释为文本时显示的数据。你期望看到零和一个数字(或许是十六进制)?或者如果您尝试以纯文本形式打开Word文档,您会看到哪种字符混杂?如果是这样,那么你需要在应用程序中打开文件,如More Info

或者,DIY选项是查看字节缓冲区,但要在文本编辑器中查看字节的唯一方法是将它们转换为字符串并保存,这将代表原始文件的值,但讽刺的不是文件本身(如果这是有道理的)。

+0

请参阅我上面的注释:) – user3390652

+1

当您编写文件显示为纯文本文件时,您如何查看该文件以及如何加载它?任何文件,不管它是否是一种纯文本编码都可以作为数据加载。它与您保存文件的方式无关。直接保存到磁盘的纯文本文件与通过Data类保存的同一文件或“二进制”文件相同。所有文件都以二进制格式保存。我们称之为某些文档二进制文件的原因是因为它们的编码复杂,无法在文本编辑器中以人类可读的方式进行解释。 – sketchyTech

+1

你的答案帮我弄清楚了我的代码有什么问题。我现在可以得到我的预期结果。谢谢 – user3390652