【问题标题】:Can users access files directly from iOS?用户可以直接从 iOS 访问文件吗?
【发布时间】:2020-01-06 21:29:37
【问题描述】:

我是 iOS 开发的初学者。

我正在通过查看制作文件的示例来复制此内容。

   override func viewDidLoad() {
        super.viewDidLoad()

        let fileName = "Test"
        let DocumentDirURL =  try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("")

        let writeString = "write test sting"
        do {
            try writeString.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8)
        } catch _ as NSError {
            print("write error")
        }
    }

我的问题是我当前的代码正在文档目录中制作和保存文件。

  1. 用户可以亲眼看到这个文件吗?
  2. 还有什么我需要获得执行权限的吗 这段代码?

这是一个旧的Swift 代码。如果有更好的方法的代码,请推荐给我。请多多帮助我。提前谢谢你。

【问题讨论】:

  • 使用documentDirectory 的问题是,是的,假设应用程序在info.plist 中提供了适当的设置,用户“可能”看到其中的文件。如果您还不想将应用程序的内容暴露给用户,则应避免将文件放在文档的目录中,除非这样做确实有意义,否则以后会为您节省大量时间和精力您确实选择公开应用程序的文档
  • 感谢您的帮助@MadProgrammer 您所说的文档目录基本上是iOS手机上的Documents文件夹吗?
  • @MadProgrammer 我问是因为我不使用 iPhone,但 iPhone 上的文档目录在哪里?是否像 Android 一样在内存中?
  • 不是。此上下文中的 documentDirectory 与应用程序本身相关

标签: ios swift permissions filesystems


【解决方案1】:

这将创建您要保存的目录的路径

 let fileManager = NSFileManager.defaultManager()

    let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)

    if let documentDirectory: NSURL = urls.first as? NSURL {
        // This is where the database should be in the documents directory
        let finalDatabaseURL = documentDirectory.URLByAppendingPathComponent("items.db")

        if finalDatabaseURL.checkResourceIsReachableAndReturnError(nil) {
            // The file already exists, so just return the URL
            return finalDatabaseURL
        } else {
            // Copy the initial file from the application bundle to the documents directory
            if let bundleURL = NSBundle.mainBundle().URLForResource("items", withExtension: "db") {
                let success = fileManager.copyItemAtURL(bundleURL, toURL: finalDatabaseURL, error: nil)
                if success {
                    return finalDatabaseURL
                } else {
                    println("Cant found!")
                }
            } else {
                println("Couldn't find !")
            }
        }
    } else {
        println("Couldn't get documents directory!")
    }

【讨论】:

  • 谢谢@ArunPrasath 这是一段代码,要求你创建一个要保存的目录路径,但我的代码不是已经存储在目录路径中了吗?
  • 它将存储在移动设备中,用户可以通过文件管理器看到,否则我们将使用模拟器在数据库浏览器中看到它谢谢@hongdevelop
  • um..OK @ArunPrasath 使用您的代码创建路径后,我应该如何使用我的代码应用它?我是iOS初学者,不知道怎么做。
猜你喜欢
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多