在.IOS项目中放置.txt文件并从中读取的位置

问题描述 投票:30回答:5

我想在我的Xcode Swift Iphone项目中放一个.txt文件。首先,我只需将其从桌面拖放到项目的Supporting Files文件夹中即可。是不是像Android“资产”那样的文件夹,所以我可以将我的文件放在我想要的任何地方?

我的示例中的文件名为README.txt,它有一堆行和段落。

很简单,现在我想将README.txt文件的内容打印到视图中。

如果我的文件在项目/SupportFiles/README.txt中,我如何执行读取功能以及应插入的路径?

非常感谢!

ios xcode swift readfile
5个回答
33
投票
let path = NSBundle.mainBundle().pathForResource("README", ofType: "txt")
textView.text = String(contentsOfFile: path, 
                             encoding: NSUTF8StringEncoding, 
                                error: nil)

只需将文件放在项目浏览器的任何位置,并确保将其添加到正确的目标。

只是为了扩展答案,您还可以将它们放在一个文件夹中并使用:+ pathForResource:ofType:inDirectory:


8
投票

我建议使用NSFileManager并将文件放在项目的任何位置:

if let path = NSBundle.mainBundle().pathForResource(name, ofType: "txt"){
    let fm = NSFileManager()
    let exists = fm.fileExistsAtPath(path)
    if(exists){
        let c = fm.contentsAtPath(path)
        let cString = NSString(data: c!, encoding: NSUTF8StringEncoding)
        ret = cString as! String
    }
}

4
投票

在Swift 3中

guard let path = Bundle.main.path(forResource: "README", ofType: "txt") else {
  return
}

textView.text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)

3
投票

Swift 4(感谢@ Pierre-Yves Guillemet原创)

只要文件在您的项目中(并且具有.txt),这将起作用(在此示例中,我假设“MyFile.txt”是我项目中的文件):

static func LoadFileAsString() -> ()
{        
    if let path = Bundle.main.path(forResource: "MyFile", ofType: "txt")
    {
        let fm = FileManager()
        let exists = fm.fileExists(atPath: path)
        if(exists){
            let content = fm.contents(atPath: path)
            let contentAsString = String(data: content!, encoding: String.Encoding.utf8)
        }
    }
}

1
投票

如果您定义path's类型并将!行放在行尾,则不会收到任何警告。

 let path:String = NSBundle.mainBundle().pathForResource("README", ofType: "txt")!
 textView.text = String(contentsOfFile: path,
                 encoding: NSUTF8StringEncoding,
                 error: nil)
© www.soinside.com 2019 - 2024. All rights reserved.