如何在Swift Playgrounds中读写文本文件的数据?

8

我阅读了这些SO链接以获取答案

1. 在Swift中逐行读取文件/URL

2. 从文本文件读取和写入数据

链接2为我提供了解决方案,但问题在于目录。它默认为当前项目的文档目录。

因此,如果我想从“/Users/Prem/Desktop/File.txt”读取文件,我应该对那段代码进行哪些修改?

如何使用自定义目录来读取和写入文本文件中的数据?

let dirs : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]

if ((dirs) != nil) {
    var dir = dirs![0]; //documents directory
    //println(dir)

    //dir = "/Users/Prem/Desktop"  ----> If i give this path, its not creating the file

    //Current Value in dir
    //dir ----> "/Users/Prem/Library/Containers/com.apple.dt.playground.stub.OSX.FileIO-2159807F-CC21-4545-AC34-AD9F9898796B/Data/Documents"

    let path = dir.stringByAppendingPathComponent("File.txt");
    println(path)
    let text = "Rondom Text"

    //writing
    text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);

    //reading
    let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)
}

运行该代码,在第4行(let dir = ...之后)打印出dir,它应该告诉你需要dir字符串的格式。 (您可以并且可能应该对路径执行相同操作) - Millie Smith
只需分配 let path = /path/to/your/file.txt ... - Martin R
1
当一个问题与重复问题提出的问题不同时,将其关闭为重复是愚蠢的。虽然原因相同,但问题是不同的。在这种情况下,这个问题更好,涵盖了在游乐场中访问文件的整个主题,但它是后来提出的。 - Cameron Lowell Palmer
@VincentBernier,您所说的更好的答案是什么意思?我们可以在playground中访问任何文件吗?如果您知道如何做到这一点,请在下面更新答案。 - iamprem
你只能访问资源文件夹中的文件,但是可以将文件写入游乐场之外的特定位置。由于此问题被标记为重复,我无法添加答案。 - Vincent Bernier
显示剩余5条评论
1个回答

9

经过几天的尝试,很明显,如果在playground中尝试进行“文件处理”,我们只能访问项目自包含的目录,因为它被沙盒化了。

但是从Xcode项目中,我们可以访问任何目录并执行读/写操作。

鸣谢:@robMayoff


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接