读取文件内容不使用 FileManager

Posted

技术标签:

【中文标题】读取文件内容不使用 FileManager【英文标题】:Reading Contents of File Not Working with FileManager 【发布时间】:2019-04-29 18:47:38 【问题描述】:

我是 Swift 的新手。

我正在尝试编写一个简单的应用程序,它只读取文件并将其内容转换为字符串。我正在使用 FileManager 以及此处为 Swift 4 提供的示例:Read and write a String from text file

但它不起作用。我假设问题是我给String(contentsOf: URL) 方法提供了错误的URL。抛出的确切错误是它无法打开文件,因为它不存在。

下面是我的ViewController.swift代码:

import UIKit

class ViewController: UIViewController 

    @IBOutlet weak var testText: UITextView!

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    

    override func viewDidAppear(_ animated: Bool) 
        super.viewDidAppear(animated)

        let test = directoryContents()
        do 
            let text = try String(contentsOf: test)
            testText.text! = text
        
        catch
            print(error.localizedDescription)
        
    


func directoryContents() -> URL 
    var dirContents: URL!
    dirContents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
    dirContents = dirContents.appendingPathComponent("testdata.txt")
    return dirContents

其余的应用程序文件是通用的单一视图应用程序文件。我会包含侧边栏的图像,但是当我尝试上传它时,问题编辑器抛出了一个错误。基本上,它看起来像:

testingData/
 testingData/
  TestData/
   testdata.txt
  AppDelegate.swift
  ViewController.swfit
  Main.storyboard
  Assets.xcassets
  LaunchScreen.storyboard
  Info.plist
 Products/
  testingData.app

Main.storyboard 添加了一个TextView,即我的ViewController 中的testText。我要读入的文件是testdata.txt,它是一个包含文本1,2,3,4,5,6 的文本文件,仅此而已。它是testingData 应用程序的成员。

我不确定我错过了什么。如果在这里的其他地方回答了这个问题,请指出我那个方向,我会关闭它。

【问题讨论】:

您应该通过项目设置中的构建设置将 txt 文件包含到包中。然后使用 Bundle api 获取文件的路径。例如,Bundle.url...。 【参考方案1】:

如果文件在应用程序包中,您必须使用Bundle的API

override func viewDidAppear(_ animated: Bool) 
    super.viewDidAppear(animated)

    let test = Bundle.main.url(forResource:"testdata", withExtension: "txt")!
    do 
        let text = try String(contentsOf: test)
        testText.text! = text
    
    catch 
        print(error)
    

并删除directoryContents()

【讨论】:

以上是关于读取文件内容不使用 FileManager的主要内容,如果未能解决你的问题,请参考以下文章

读取 plist 文件崩溃

如何在不实际提取文件的情况下使用 VBScript 读取 .zip 文件的内容?

怎样使用lua读取文件夹内所有文件?

读取csv文件内容

Java 如何读取目录下的文件内容

读取“文件”对象的内容?