【问题标题】:How to read text-file in Swift 2.0 with one line of code如何用一行代码在 Swift 2.0 中读取文本文件
【发布时间】:2015-09-21 02:05:12
【问题描述】:

我正在尝试读取文件的内容。

在 Python 中,这将是一个单行:

seq_file = open('/some/local/file-path/on/computer.txt','r').read()
print seq_file

你怎么能用 Swift 写一个单行代码来做同样的事情?

我打开文件的快速代码(仅适用于终端而不是 Playground):

let seq_path = "/some/local/file-path/on/computer.txt"
let file_manager = NSFileManager.defaultManager()
let data: NSData = file_manager.contentsAtPath(seq_path)!
let seq_file = NSString(data: data, encoding: NSUTF8StringEncoding)
print(seq_file)

我不确定为什么在 Swift 中阅读要复杂得多。如果有人想解释,那将非常有帮助。
我已经了解了 Swift 的优势……如果它如此新颖和强大,他们为什么要把这么简单的任务搞得这么复杂?

背景(如果有人感兴趣): 生物学本科,2012 年开始学习 Python 作为我的第一门编程语言。至今仍用它来分析生物数据。现在我是一名研究生,这些年来我对计算机科学越来越感兴趣。我想开始为 OSX 和 iOS 编写程序,我认为学习这门语言的一个好方法是用 Swift 重写我所有的算法。

【问题讨论】:

  • 我对 swift 一无所知,但公平地说:您的 swift 代码将数据解码为字符串,而您的 python 2 代码仅读取字节跨度>

标签: python swift file compare


【解决方案1】:

我已经了解了 Swift 的优势...如果它如此新颖和强大, 他们为什么要把这么简单的任务搞得这么复杂?

好吧,在 Swift 中你可以这样做:

let string = try? NSString(contentsOfFile: "name.txt", encoding: NSASCIIStringEncoding)
print(string)

问题是你是否真的想要,因为更长的版本给你更多的灵活性和更好的错误处理......

【讨论】:

  • 尝试什么?一开始?它只适用于尝试...我想知道为什么你不能绕过它?
  • try 允许捕获和处理错误。尝试!如果出现错误,将使应用程序崩溃。尝试?不会使应用崩溃,不需要 catch 块,但如果有错误将返回 nil。
【解决方案2】:

不知道,我想语言设计者有他们的优先事项。值得庆幸的是,swift 代码可能会丢失一行,但仍然可以很好地阅读:

let file_manager = NSFileManager.defaultManager()
let data: NSData = file_manager.contentsAtPath("/some/local/file-path/on/computer.txt")!
let seq_file = NSString(data: data, encoding: NSUTF8StringEncoding)
print(seq_file)

这或多或少是用 java 1.4 读取文件所需要的:

try
{
    String line;
    File file = new File(("manifest.mf");
    BufferedReader inFile = new BufferedReader(new FileReader(file));
    while((line = inFile.readLine()) != null)
    {
            System.out.println(line)
    }
    inFile.close();
}
catch (IOException e)
{
    System.out.println("problem with file");
}

在 java 8 中,你可以这样做:

    Files.lines(Paths.get("manifest.mf")).forEach(System.out::println);

情况发生了变化。斯威夫特是 1.2。不过看起来确实有点过时了。

【讨论】:

  • Swift 目前是 2.0。截至 2015 年 9 月 18 日。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多