从文本文件读取和写入字符串
在 Swift 中,您可以使用 String 类的 String(contentsOfFile:) 和 write(toFile:atomically:encoding:) 方法从文本文件读取和写入字符串。您将看到一些 Swift 中文件读取和写入的示例。
String(contentsOfFile:)
String 类提供了一个从文件内容创建字符串的类方法。此方法是一个初始化程序,必须提供文件路径。例如,您可以通过将路径传递给主包来读取本地文件的内容。此过程将返回一个包含文件内容的新字符串。
请记住,如果内容或路径无效或出于任何其他原因,此方法可能会返回 nil。可以使用 try-catch 块来处理这种情况。
write(toFile:atomically:encoding:)
在此方法中,String 类的实例将字符串的内容写入文件。该方法采用三个参数:
toFile − 要将字符串写入的文件的路径。
atomically − 一个布尔值,确定是否应以原子方式写入文件。如果设置为 true,则将文件写入临时位置,然后将其重命名为最终位置。这可以帮助防止在写入操作期间发生故障时数据丢失。
encoding − 将字符串写入文件时使用的编码。默认值为 .utf8。
以下是有关如何从文本文件读取字符串的示例
请注意,在开始读取文件之前。这里,我们在 Xcode 项目中添加了一个名为“example.txt”的文件。我们将读取同一个文件。在该文本文件中,我们添加了以下字符串内容:
Lorem Ipsum 仅仅是印刷和排版行业的虚拟文本。
自从 1500 年代,当一位不知名的印刷工取走了一版印刷样张,并将其重新排列以制作一本印刷样张书籍时,Lorem Ipsum 就一直是该行业的标准虚拟文本。
示例
将从 example.txt 文件中读取相同的字符串内容。
func readString() { do { // creating a path from the main bundle if let bundlePath = Bundle.main.path(forResource: "example.txt", ofType: nil) { let stringContent = try String(contentsOfFile: bundlePath) print("Content string starts from here-----") print(stringContent) print("End at here-----") } } catch { print(error) } }
输出
Content string starts from here----- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. End at here-----
以下是如何将字符串写入文本文件的示例
要将字符串内容写入文件,我们将使用上面示例中使用的相同文件。
示例
func writeString() { do { // creating path from main bundle if let bundlePath = Bundle.main.path(forResource: "example.txt", ofType: nil) { let stringToWrite = "This is a string to write to a file." try? stringToWrite.write(toFile: bundlePath, atomically: true, encoding: .utf8) let stringContent = try String(contentsOfFile: bundlePath) print("Content string starts from here-----") print(stringContent) print("End at here-----") } } catch { print(error) } }
输出
Content string starts from here----- This is a string to write to a file. End at here-----
请注意,bundlePath 变量是包中文件的路径。如果文件不在包中,您也可以使用自定义路径。
请记住,contentsOfFile: 和 write(toFile:atomically:encoding:) 方法可能会抛出错误,因此建议使用 try? 或 try! 关键字或 do-catch 语句来处理它们。
结论
上述方法用于将文件的内容读取到字符串中,然后将字符串写入文件。
您应该注意,当您处理文件时,需要处理错误。这是因为在读取或写入文件时,出现错误的可能性更大。您可以提供自定义路径或包中的路径。此外,您可以使用 FileManager 提供文件系统的路径。