Swift - 将字节流写入文件

Sim*_*ens 2 file bytestream swift

我有一个几百字节的字符串和一些 Int32 值。我想将这些逐字写入文件。

我尝试了许多建议的解决方案,但没有一个对我有用。我在文件中得到了多余的括号、空格或逗号。

谁能提出一个简单可靠的解决方案?

我以为我的问题很清楚,但在阅读评论后,我简化了它。

如何将“12345”写入和/或附加到文件,以便文件包含以下十六进制值: 3132333435 ?

通过编写 NSData 字符串,我可以获得的最佳结果是 <3132333435>。

我可以使用此链接获得所需的结果:是否 swift 有用于写入字节流的协议?,但我无法将数据附加到我创建的文件中。

mat*_*att 5

我建议使用 NSFileHandle。

我是这样测试的。我从一个包含“测试”一词的文件~/Desktop/test.txt开始。然后我运行了这个代码:

    let s = "12345"
    let d = s.dataUsingEncoding(NSASCIIStringEncoding)!
    let path = ("~/Desktop/test.txt" as NSString).stringByExpandingTildeInPath
    if let fh = NSFileHandle(forWritingAtPath: path) {
        fh.seekToEndOfFile()
        fh.writeData(d)
        fh.closeFile()
    }
Run Code Online (Sandbox Code Playgroud)

结果是文件现在包含

testing12345
Run Code Online (Sandbox Code Playgroud)

十六进制转储显示底层字节是:

74 65 73 74 69 6E 67 31 32 33 34 35
Run Code Online (Sandbox Code Playgroud)

我相信这就是你所说的你想要达到的目标。

另外,还有一条评论:

我能得到的最好结果是 <3132333435>

听起来好像问题仅仅是您不知道如何读取控制台输出。该<>是不是真正的文件; 它们只是数据的控制台表示的一部分。最好使用 BBEdit / TextWrangler 或专用的十六进制转储器来查看文件的实际字节。