swift - 无论如何不包括文件路径的开头
问题描述
好的,所以我的项目需要使用 textFile 来存储数据。当我将它传递给老师时,我不希望文件重置或由于无法找到路径而出错,无论如何都可以完成此操作.(新来的迅速。)
func writeFile()
{
let str = temp
let path = "/Users/xdesss/Desktop/Projectv4/Project/holder.txt"
let filename = URL(fileURLWithPath: path)
do {
try str.write(to: filename, atomically: true, encoding: .utf8)
try print(String(contentsOf: filename))
print("This Url: \(path)")
} catch {
print("fail")
}
}
解决方案
/Desktop/Projectv4/Project/holder.txt
是本地机器上的绝对路径。如果您在另一台计算机上运行此项目,则此路径将不存在,并且.txt
文件将不存在。
您需要使用相对路径,因此.txt
将使用项目文件夹作为基础加载文件。
为了实现这一点,您可以使用 Swift FileManager
文件系统内容的便捷接口,以及与之交互的主要方式。
使用它,您的代码将是这样的:
func writeFile() {
let str = temp
let file = "holder.txt"
let currentDirectoryURL = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
let fileURL = currentDirectoryURL.appendingPathComponent(file)
do {
try str.write(to: fileURL, atomically: true, encoding: .utf8)
try print(String(contentsOf: fileURL))
print("This Url: \(fileURL)")
}
catch {/* error handling here */}
}
推荐阅读
- javascript - How to properly store $ dollar values from a given excel spreadsheet into a postgresql database
- rx-java2 - RxJava2:使用 TestObserver 订阅了如何测试 observable
- java - 如何使用设置为 NONSTRICT_READ_WRITE 的 CacheConcurrencyStrategy 处理休眠 UnsupportedOperationException“无法写入只读对象”
- laravel - Laravel 条件路由键使用 getRouteKeyName
- python - Add creator name to a block
- sql - SQL-从列表中选择特定值
- sql - How to use QueryWrapper.select(columns) in Custom SQL statements in mybatis-plus?
- html - How to put a child div with same size of parent div
- sql - SQL获取日期较小日期的最大值
- python - Tokenize multiple sentences to rows in python pandas