首先,请确保PerfectLib已经在您的Swift源程序开始部分完成声明:import PerfectLib声明完成之后,即可开始使用File文件对象来实现在文件系统中的查询和文件操作。配置File文件对象使用File文件对象时,请指定文件的绝对或相对路径:let thisFile = File("/path/to/file/helloWorld.txt")如果您对文件路径还不熟悉,请先阅读目录与路径打开文件用于读写操作注意: 在写入文件操作之前(即使是个新文件)文件需要对应的权限才能打开。打开一个文件:try thisFile.open(<OpenMode>,permissions:<PermissionMode>)写入文件的例子:let thisFile = File("helloWorld.txt")try thisFile.open(.readWrite)try thisFile.write(string: "你好!")thisFile.close()对于文件打开的具体模式OpenMode 和文件权限模式 PermissionMode ,请参考本文附录的详细定义。检查文件是否存在请使用exists方法检查文件是否存在。该方法返回一个布尔值,真表示存在,假表示不存在。thisFile.exists获取文件修改时间调用下面的函数将返回一个整数,其含义为自格林威治时间1970/01/01 00:00:00到最后一次修改文件的时间之间的秒数:thisFile.modificationTime文件路径无论文件参考对象是如何定义的,文件所在的绝对路径和内部参考路径都可以通过以下访问获取具体信息:返回系统内部参考路径"internal reference":thisFile.path返回文件的绝对路径(物理路径)方法(如果当前文件为符号链接,则同样其链接也会被解析为绝对路径):thisFile.realPath关闭一个文件一旦文件被打开并执行读写操作,随时可以在程序内选择用close方法关闭,或使用defer方法挂起:let thisFile = File("/path/to/file/helloWorld.txt")// 在此处进行文件读写操作处理thisFile.close()删除一个文件如果需要从文件系统中删除一个文件,请使用delete()方法。thisFile.delete()调用删除方法时会自动关闭文件,因此不需要提前进行额外的close()关闭操作。查询文件大小尺寸调用size方法可以返回文件大小的字节数,返回值为整数。thisFile.size判断文件是否为一个符号链接用下面的方法来判断当前文件对象是否为一个符号链接,如果是符号链接则返回值为布尔类型的true,真值,反之为false假。thisFile.isLink判断当前文件对象是否为一个目录用isDir 方法来判断当前文件对象是否为一个目录节点,如果是则返回值为布尔类型的true,真值,反之为false假。thisFile.isDir获取文件的UNIX权限信息调用perms 函数可返回文件的权限信息,返回值为一个PermissionMode对象。thisFile.perms比如:print(thisFile.perms)>> PermissionMode(rawValue: 29092)读取文件内容readSomeBytes根据指定的字节数量读取文件内容:let thisFile = File("/path/to/file/helloWorld.txt")let contents = try thisFile.readSomeBytes(count: <Int>)参数说明该方法的参数为计划读取的字节数量。比如,下面的例子说明了如何从文件中读取10字节数据:let thisFile = File("/path/to/file/helloWorld.txt")let contents = try thisFile.readSomeBytes(count: 10)print(contents)>> [35, 32, 80, 101, 114, 102, 101, 99, 116, 84]readStringreadString方法能够将整个文件的数据读取到一个字符串:let thisFile = File("/path/to/file/helloWorld.txt")let contents = try thisFile.readString()文件写操作、拷贝和移动注意 在写文件之前(即使是一个新文件)必须要确认文件操作具备响应的权限。向文件内写入字符串使用write方法以UTF-8编码格式向文件创建或写入一个字符串。如果写入成功,则返回具体写入的字节数。注意该方法会使用@discardableResult属性,所以如果需要的话,即便没有对该属性赋值,也会在调用过程中被使用。let bytesWritten = try thisFile.write(string: <String>)将字节数组写入到一个文件字节数组bytes同样可以直接写入到一个文件。该方法如果调用成功则返回实际写入的字节数。注意该方法会使用@discardableResult属性,所以如果需要的话,即便没有对该属性赋值,也会在调用过程中被使用。let bytesWritten = try thisFile.write(bytes: <[UInt8]>,dataPosition: <Int>,length: <Int>)参数说明bytes: 待写入的无符号8位整型数组dataPosition: 可选参数 在bytes对象中待写入字节的偏移量。如果该参数不为0,则写入时从字节数组的该参数指定字节处开始写入,之前内容会被忽略length: 可选参数 需要写入的具体字节数量移动一个文件文件对象一旦定义成功,就可以随时调用moveto方法,将文件移动到一个新的路径位置上。该方法也可以用于给文件改名。操作完成后,该方法返回一个代表新位置的新的文件对象。let newFile = thisFile.moveTo(path: <String>, overWrite: <Bool>)参数说明path: 移动的目标路径overWrite: 可选参数 如果目标路径文件已经存在,则进行覆盖操作。默认值为假false