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

时间:2014-11-29 19:31:17

标签: ios xcode swift readfile

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

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

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

如果我的文件在项目/SupportFiles/README.txt中,我该怎么做读取功能以及我应该插入什么路径?

非常感谢!

6 个答案:

答案 0 :(得分:34)

let path = NSBundle.mainBundle().pathForResource("README", ofType: "txt")
textView.text = String(contentsOfFile: path, 
                             encoding: NSUTF8StringEncoding, 
                                error: nil)

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

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

答案 1 :(得分: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
    }
}

答案 2 :(得分: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 :(得分:3)

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

只要文件在您的项目中(并且具有.txt),这将起作用(在此示例中,我假设&#34; MyFile.txt&#34;是我项目中的文件):< / p>

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)
        }
    }
}

答案 4 :(得分:1)

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

 let path:String = NSBundle.mainBundle().pathForResource("README", ofType: "txt")!
 textView.text = String(contentsOfFile: path,
                 encoding: NSUTF8StringEncoding,
                 error: nil)

答案 5 :(得分:0)

有一个Assets.xcassets用于图像和文件。 这是从资产中读取信息的方法。

if let data = NSDataAsset(name: "AssetName")?.data {
    textView.text = String(data: data, encoding: .utf8)
}