刚开始学习Swift,我已经从文本文件中读取了代码,应用程序显示了整个文本文件的内容.如何逐行显示并多次调用该行?
TextFile.txt包含以下内容.
以下是目前的......
if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){
var data = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil)
if let content = (data){
TextView.text = content
}
Run Code Online (Sandbox Code Playgroud)
如果还有其他方式,请告诉我.非常感激
我已经读过从文本文件中读取和写入数据
我需要将数据(字符串)附加到我的文本文件的末尾.
一种显而易见的方法是从磁盘读取文件并将字符串附加到它的末尾并将其写回,但效率不高,尤其是在处理大文件并经常进行时.
所以问题是"如何将字符串附加到文本文件的末尾,而不读取文件并将整个内容写回来"?
到目前为止我有:
let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL
let fileurl = dir.URLByAppendingPathComponent("log.txt")
var err:NSError?
// until we find a way to append stuff to files
if let current_content_of_file = NSString(contentsOfURL: fileurl, encoding: NSUTF8StringEncoding, error: &err) {
"\(current_content_of_file)\n\(NSDate()) -> \(object)".writeToURL(fileurl, atomically: true, encoding: NSUTF8StringEncoding, error: &err)
}else {
"\(NSDate()) -> \(object)".writeToURL(fileurl, atomically: true, encoding: NSUTF8StringEncoding, error: &err)
}
if err != nil{
println("CANNOT LOG: \(err)")
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习新的Swift编程语言.它看起来很棒,但我很难做一些像读取本地.txt文件内容这样简单的事情.
我已经尝试了几个我可以通过Google找到的例子,但是它们给出了编译错误,比如这里的答案:从文本文件中读取和写入数据 如果我稍微调整一下代码,它可以工作,但只能从内部的特殊位置读取该项目.
为什么用Swift读取.txt文件就像使用Ruby一样简单?我将如何阅读位于的文件内容~/file.txt?
日Thnx
我想知道将文本文件读入字符串数组中最简单,最干净的是快速的.
文本文件:
line 1
line 2
line 3
line 4
Run Code Online (Sandbox Code Playgroud)
进入这样的数组:
var array = ["line 1","line 2","line 3","line 4"]
Run Code Online (Sandbox Code Playgroud)
我也想知道如何在这样的结构中做类似的事情:
Struct struct{
var name: String!
var email: String!
}
Run Code Online (Sandbox Code Playgroud)
所以拿一个文本文件并将其放入数组中的struct中.
谢谢您的帮助!
我通读了这些SO链接以获得答案
链接2为我提供了解决方案,但问题是目录.默认情况下,它是当前项目的Document目录.
因此,如果我想从"/Users/Prem/Desktop/File.txt"中读取文件,我应该对该代码进行哪些修改?
如何使用自定义目录在文本文件中读写数据?
let dirs : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
if ((dirs) != nil) {
var dir = dirs![0]; //documents directory
//println(dir)
//dir = "/Users/Prem/Desktop" ----> If i give this path, its not creating the file
//Current Value in dir
//dir ----> "/Users/Prem/Library/Containers/com.apple.dt.playground.stub.OSX.FileIO-2159807F-CC21-4545-AC34-AD9F9898796B/Data/Documents"
let path = dir.stringByAppendingPathComponent("File.txt");
println(path)
let text = "Rondom Text"
//writing
text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);
//reading
let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, …Run Code Online (Sandbox Code Playgroud) 我的应用程序需要创建文件(例如 .txt 文件)和目录来对该文件进行编目,这些文件必须存储在手机中。运行该应用程序,我将创建一个特定目录和一个将在内部保存的特定 .txt 文件。
我来自 Android Studio,这样做很简单,但在 Swift 上我找不到方法。
我试试这个:
// Save data to file
let fileName = "Test"
let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("txt")
Run Code Online (Sandbox Code Playgroud)
如果应用程序在启动时创建该文件,则该文件可用。
如果我注释这些行并检查该文件是否存在,它就会失败。
有什么建议吗?我想我使用了错误的类,但我找不到其他任何东西。
Data.txt包含这样的东西:"Cat""Dog""Mouse"
我想用该文件中的字符串填充数组(dico [0] ="Cat",dico [1] ="Dog",aso).
我发现了这个,如何在Swift中调用Objective-C的NSArray类方法?并从文本文件中读取和写入数据,但是当我使用此代码时:
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSArray(contentsOfFile: path)
println("\(dico[0])")
println("\(dico.count)")
Run Code Online (Sandbox Code Playgroud)
我得到的只是"零"和"0".
我想我的文件中的数据不是按照应该的方式编写的,我使用的代码不对,但我无法理解为什么.
而且,当我使用这段代码时,它没关系:
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("data", ofType: "txt")
let dico = NSString(contentsOfFile: path)
println("\(dico)")
Run Code Online (Sandbox Code Playgroud)
问题是我不希望dico成为一个字符串,我希望它是一个数组.
Swift 的新手,但用其他语言(Java、C、Python ......)完成了大量编码,我对简单地读取文件看起来有多么困难感到沮丧。
我已经阅读了许多帖子,例如这个帖子,但无法让他们的建议发挥作用。还可以阅读这篇文章和这一个,但解决方案似乎长了这样一个简单的任务,也没有为我工作。
这是一个简单的版本:
import Foundation
let path = "./data.txt"
let fileContents = String(contentsOfFile: path, encoding: NSUTF8StringEncoding)
print(fileContents) // prints out: ("./data.txt", 4)
let lines : [String] = fileContents.componentsSeparatedByString("\n") // error: value of type 'String' has no member 'componentsSeparatedByString'
Run Code Online (Sandbox Code Playgroud)
现在,根据我上面链接的第一篇文章,我希望这会将指定的文件读入一个字符串,然后在换行符上拆分字符串,并给我一个数组,每行作为一个元素。相反,当我打印 fileContents 时,我得到的是某种类型的元组而不是我期望的字符串。当我尝试拆分字符串时,显然该函数不存在。
有人可以解释我遗漏了什么并向我展示了一种将文件中的行读入字符串数组的简短方法吗?我正在阅读文档,但甚至找不到第 3 行中 String() 调用的解释或第 5 行中对 componentsSeparatedByString() 的引用,所以我完全不考虑第一篇文章中的建议;任何指针都非常感谢。
请帮助我!\n我在项目中添加了一个 json 文件\n我的 json 文件:
\n\n{\n "person": [\n {\n "title": "\xd0\x92\xd0\xb8\xd1\x82\xd0\xb0\xd0\xbc\xd0\xb8\xd0\xbd \xd0\x90",\n "image": "Vitamin1",\n "favorite": false\n },\n {\n "title": "\xd0\x92\xd0\xb8\xd1\x82\xd0\xb0\xd0\xbc\xd0\xb8\xd0\xbd B6",\n "image": "Vitamin2",\n "favorite": false\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我可以读取文件:
\n\nstruct ResponseData: Decodable {\n var person: [Person]\n}\n\nstruct Person : Decodable {\n var title: String\n var image: String\n var favorite: Bool\n}\nRun Code Online (Sandbox Code Playgroud)\n\n从文件函数加载 json:
\n\nfunc loadJson(filename fileName: String) -> [Person]? {\n if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {\n do {\n let data = try Data(contentsOf: url)\n let …Run Code Online (Sandbox Code Playgroud) 这是我的文件.
我该怎么写这个数组:
var listOfTasks = [["Hi", "Hello", "12:00"],["Hey there", "What's up?", "3:17"]]
到.txt文件(file.txt)?我知道还有其他问题,但它们是其他语言(不是Swift).我希望它可以在真正的iPhone上运行.如有必要,我很乐意提供更多信息.我是Swift的新手,请原谅我的问题,如果它看起来太简单了.注意:我特别询问有关包含数组的数组.
提前致谢!