//***************************************************
//
// >>>>>>>Swift调用OC之文件操作-NSFileHandle<<<<<<<
//
// 对文件内容数据的操作
// FileHandle-文件句柄有个活动指针,指向当前文件内数据的偏移量
// **** 本节内容 ****
//
// 1.文件内容定位
// -- seekToEndOfFile : 句柄指向文件末尾,返回移动后指针的偏移量
// -- seekToFileOffset(<#offset:UInt64#>) : 句柄指向特定的偏移量位置
//
// 2.文件数据读取
// -- readDataToEndOfFile : 从当前指针位置一直读到末尾
// -- readDataOfLength(<#length: Int#>): 从当前指针位置读取固定长度的数据
//
// 3.文件数据写入
//
//***************************************************
import Foundation
//------ 先定义一个文件的路径 ---------//
let manage = NSFileManager.defaultManager()
let documentUrl = manage.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory,inDomains: NSSearchPathDomainMask.UserDomainMask)
let Url = documentUrl[0] as NSURL
let fileUrl = Url.URLByAppendingPathComponent("test.txt") //定义文件路径
var error : NSErrorPointer = nil
ifmanage.fileExistsAtPath(fileUrl.path!) == true {
//------ 1.文件内容定位 ---------//
varreadHandler : NSFileHandle! = NSFileHandle(forReadingFromURL: fileUrl, error: nil) //该方法获取句柄成功时,会将指针指向文件开头
readHandler.seekToFileOffset(0) //指针定位到文件头
varnsData = readHandler.readDataToEndOfFile() //读取从指针当前位置到末尾的所有数据
var strData : NSString! = NSString(data: nsData,encoding: NSUTF8StringEncoding)
println("写入前文件内容=\(strData)")
//------ 2.文件数据写入 ---------//
let string = "+将这些数据写入到文件末尾"
let appendData : NSData! = string.dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion: true)
letwriteHandler : NSFileHandle! = NSFileHandle(forWritingToURL: fileUrl, error: nil) //该方法获取句柄成功时,会将指针指向文件开头
writeHandler.seekToEndOfFile() //指针定位到文件末尾,即从末尾开始写入
writeHandler.writeData(appendData)
readHandler?.seekToFileOffset(0)
nsData= readHandler!.readDataToEndOfFile()
strData= NSString(data: nsData, encoding: NSUTF8StringEncoding)
println("写入后文件内容=\(strData)")
}