【问题标题】:Append text to document file in Swift [duplicate]在Swift中将文本附加到文档文件[重复]
【发布时间】:2020-01-09 10:02:08
【问题描述】:

将文本写入文件文档时出现问题。 这是我的源代码:

 func getDocumentsDirectory() -> URL {
     let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
     return paths[0]
 }

 let fileName = getDocumentsDirectory().appendingPathComponent("LogFile.txt")

 do {
   try KML.soapRequest.xml.write(to: fileName, atomically: true, encoding: String.Encoding.utf8)
 } catch {
     print("Failed save")
 }

我想在文件“LogFile.txt”中插入文本,我是 swift 语言的新手。

感谢大家的帮助。

【问题讨论】:

    标签: swift


    【解决方案1】:

    我在这里找到了您的问题:Append text or data to text file in Swift

    • 如果文件存在,将附加到文本文件中。
    • 如果文本文件不存在,将创建一个新文件。

      class Logger {
      
      static var logFile: URL? {
          guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return nil }
      
          let formatter = DateFormatter()
              formatter.dateFormat = "dd-MM-yyyy"
          let dateString = formatter.string(from: Date())
          let fileName = "\(dateString).log"
      
          return documentsDirectory.appendingPathComponent(fileName)
          }
      
      static func log(_ message: String, functionName: String = #function, filename: String = #file, line: Int = #line) {
           guard let logFile = logFile else {
              return
           }
      
           let className = filename.components(separatedBy: "/").last
      
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS "
            let timestamp = formatter.string(from: Date())
            guard let data = ("[\(timestamp)]  [\(className ?? "")] \(functionName)\(line): \(message)" + "\n").data(using: String.Encoding.utf8) else { return }
      
            if FileManager.default.fileExists(atPath: logFile.path) {
               if let fileHandle = try? FileHandle(forWritingTo: logFile)          {
                      fileHandle.seekToEndOfFile()
                      fileHandle.write(data)
                      fileHandle.closeFile()
               }
              } else {
                 try? data.write(to: logFile, options: .atomicWrite)
              }
           }
      }
      

    【讨论】:

    • 感谢您的帮助。我现在就试试。
    • 效果很好。非常感谢!
    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 2015-02-04
    • 2016-03-25
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多