当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时
Posted
技术标签:
【中文标题】当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时【英文标题】:When I am appending every string to .txt file by using try String(contentsOf: shareLog) in swift failing Some times 【发布时间】:2018-03-31 15:31:53 【问题描述】:我正在调用波纹管函数来获取 .txt 文件的内容,并且有时我会成功,但有时当我尝试获取它时会捕获块并给出波纹管错误..请帮帮我
p>// 用于分享
func getLogData(file: String) -> String?
let shareLog = dir.appendingPathComponent(file, isDirectory: false)
if fileManager.fileExists(atPath: shareLog.path)
do
let result1 = try String(contentsOf: shareLog)
print(result1)
return result1
catch let error as NSError
print("Failed reading from file: \(error)")
return nil
print("Failed to get log at: \(logPath)")
return nil
//尝试获取.txt文件内容时出错
Error Domain=NSCocoaErrorDomain Code=264 "无法打开文件“somelog-log.txt”,因为无法确定其内容的文本编码。" UserInfo=NSFilePath=/var/mobile/Containers/Data/Application/199D8E4D-6DFC-4327-BC57-06957BCC6EA3/Documents/somelog-log.txt
【问题讨论】:
【参考方案1】:明确指定编码
let result1 = try String(contentsOf: shareLog, encoding: .utf8)
【讨论】:
谢谢你,但是当我这样做时..我得到.....错误域=NSCocoaErrorDomain Code=261“文件”2018-04-04T15/28/48-04/00 -log.txt”无法使用文本编码 Unicode (UTF-8) 打开。” UserInfo=NSFilePath=/var/mobile/Containers/Data/Application/0B8CE9C6-AAF2-41C1-9FA4-65FB57BD4B4E/Documents/2018-04-04T15:28:48-04:00-log.txt, NSStringEncoding=4 始终将文件保存为 UTF8。 我没有保存我正在通过电子邮件共享 .txt 文件。所以当我阅读文件内容时,它会因该错误而失败。 您正在从磁盘读取文件,因此有时它必须已写入磁盘。确保可以确定编码。 txt.appendLineToURL(fileURL: logPath as URL) .. extension String //第一个方法 func appendLineToURL(fileURL: URL) throws do try (self + "\n").appendToURL( fileURL: fileURL) catch let error print(error) //第二个方法 func appendToURL(fileURL: URL) throws let data = self.data(using: String.Encoding.utf8)! do try data.append(fileURL: fileURL) catch let error print(error)以上是关于当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时的主要内容,如果未能解决你的问题,请参考以下文章