2017-04-02 111 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