我有一个纯文本文件,只有一个单词列表。我想把这个列表作为一个数组,但我没有运气。我也可以把它作为一个字符串把它转换成一个数组,但我也不能让它工作。
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)
答案 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)
}
}