swift如何将文本文件转换为字符串或数组?

时间:2015-03-26 20:29:58

标签: swift

我有一个纯文本文件,只有一个单词列表。我想把这个列表作为一个数组,但我没有运气。我也可以把它作为一个字符串把它转换成一个数组,但我也不能让它工作。

let location = "/Users/user/Desktop/list.txt"
var content = NSString(contentsOfFile: location, encoding: NSUTF32StringEncoding, error: nil)
println(content)

我的输出始终是“nil"。如果我尝试做一个数组,那就是同样的事情:

let content2 = NSArray(contentsOfFile: location)
println(content2)

4 个答案:

答案 0 :(得分:1)

我使用这个帮助程序类进行文件工作:

class File {
    var path=""

    init(path: String,name:String){
        self.path=path+"/"+name
    }

    init(path: String){
        self.path=path
    }

    func read()->String {
        return NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)!
    }

    func write(data: String) {
        data.writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
    }

    func getLineArray()->[String] {
        return read().componentsSeparatedByString("\n")
    }
}

使用:

let address = "/Users/sajadgarshasbi/Desktop/myTestFile/sample.txt"
if NSFileManager.defaultManager().fileExistsAtPath(address) {
    let f = File(path: address)
    println(f.read())
}else{
    println("File Not Found")
}

答案 1 :(得分:0)

该文件是否存在?什么

NSFileManager().fileExistsAtPath(location)

返回?

另外,你确定它是UTF-32编码的吗?最可能的编码可能是UTF-8。

答案 2 :(得分:0)

变化:

var content = NSString(contentsOfFile: location, encoding: NSUTF32StringEncoding, error: nil)

为:

var content = NSString(contentsOfFile: location, encoding: NSUTF8StringEncoding, error: &err)

编辑:根据Martin R的请求从建议修复中删除nil

答案 3 :(得分:0)

如果您正在使用游乐场,它将始终返回nil,因为游乐场是沙盒。您可以将文件放在文档目录中,但它位于计算机的其他位置,可能看起来像下面的字符串。

  

" /var/folders/f9/yrxcqv_10m57prx9lwts4qy80000gq/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-iOS-NSDate-85BEA777- C527-4A79-9B4E-53427CF98B7D /文档/"

您可以使用取景器主菜单打开此文件夹>去>转到文件夹...(命令移位-G)并将该目录路径粘贴到那里。

您可以使用以下代码找到您的游乐场文档文件夹:

let documentDirectoryPath =  (NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as NSURL).path!

只需将文件放在那里,然后就可以将其作为字符串打开:

let fileName = documentDirectoryPath.stringByAppendingPathComponent("test.txt")

var error:NSError?
if "This is a sample sentence.".writeToFile(fileName, atomically: true, encoding: NSUTF8StringEncoding, error: &error) {
    println("file successfully saved")  // "file successfully saved"
} else {
    if let error = error {
        println(error.description)
    }
}


if let myLoadedString = String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding, error: &error) {
    println(myLoadedString)  // "This is a sample sentence."
} else {
    if let error = error {
        println(error.description)
    }
}