On 18 May 2016, at 23:02, John Myers via swift-users <swift-users@swift.org> 
wrote:

> I've been having trouble figuring out how to read and write data to a 
> textfile, and not finding much out there for Swift on Linux.

Sorry about being complicit in the one-shot vs streaming I/O diversion.  It’s 
true that Swift’s streaming I/O story is in flux and I’m sure that Jens and co. 
will have fun designing its replacement, but right now I’d kinda like to bring 
this back to the original question.

Below is a snippet that shows how to process a file line-by-line using 
Foundation APIs.  As you can see, if you’re just trying to runs simple tests on 
the lines in a text file, doing this with Foundation is much easier than doing 
it with the current lower-level APIs.

---------------------------------------------------------------------------
import Foundation

func quoteFile(atPath filePath: String) throws {
    let input = try NSString(contentsOfFile: filePath, encoding: 
NSUTF8StringEncoding)
    let inputLines = input.components(separatedBy: "\n")
    var outputLines: [String] = []
    for line in inputLines {
        let newLine = "> " + line
        outputLines.append(newLine)
    }
    let output = outputLines.joined(separator: "\n")
    try output.write(toFile: filePath, atomically: true, encoding: 
NSUTF8StringEncoding)
}

try! quoteFile(atPath: "/Users/quinn/victim.txt")
---------------------------------------------------------------------------

I tested this on OS X (don’t have Linux set up, sorry) with the “2016-05-09 
(a)” Swift development snapshot.

Share and Enjoy
--
Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
Apple Developer Relations, Developer Technical Support, Core OS/Hardware


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to