本文目录一览:
- 1、[Swift]使用WKWebView加载本地HTML文件
- 2、swift 怎么实文件读写
- 3、swift 文件读写
- 4、swift或OC中NSURLConnection finished with error - code -1002
- 5、swift怎么读取本地的html文件
- 6、swift中为什么获取不到本地的音乐文件的路径
[Swift]使用WKWebView加载本地HTML文件
我们项目中有的时候会使用HTML写一些静态页面, 然后直接加载显示到我们的APP中, 之前一直使用的UIWebView来加载, 是这样的:
如果想使用WKWebView来加载, 好像失败了:
这样是加载不了本地的HTML文件的. 下面就来看一下加载本地HTML的方法.
一般我们直接添加到项目中的文件是默认Create groups的, 即: 在我们添加文件到项目中, 例如一个文件夹, 选项是这样的:
这样在项目中添加的文件夹是黄色的, 这时我们在加载HTML的不能使用path来加载了, 应该使用URL, 即:
如果还是使用filePath来加载, 也是可以的, 但是将HTML文件添加到资源目录的时候需要注意: 我们需要选择Create folder references, 为便于区分, 我同样是添加了一个文件夹, 然后将HTML文件添加到这个文件下面:-swift读取本地文件
这时候会发现, 文件夹是蓝色的, 项目中是这样的:
将HTML文件放到这个蓝色文件夹下面后, 我们就可以在项目中这样使用WKWebView来加载了:
这里最主要的是需要自己来拼接完整的文件路径:
上面黄色文件夹Files下的HTML可以使用UIWebView, 使用之前的方式加载, 也可以使用WKWebView以URL的方式来加载; 蓝色HTML_Files文件夹下的HTML文件, 可以使用上面的方式用WKWebView以路径的方式来来加载.-swift读取本地文件
swift 怎么实文件读写
首先,请确保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]
readString
readString方法能够将整个文件的数据读取到一个字符串:
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
swift 文件读写
func jwSaveUser() {
let dic:NSDictionary = self.mj_keyValues()
let data:Data = NSKeyedArchiver.archivedData(withRootObject: dic)
let doc:String = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last!-swift读取本地文件
let path = doc.appending("/loginUser.data")
do{
try data.write(to: URL(fileURLWithPath: path))
}
catch{
print("r存入失败")
}
}
func synchronousData(){
let doc:String = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last!-swift读取本地文件
let path = doc.appending("/loginUser.data")
let data:NSData? = NSData(contentsOfFile: path)
if nil == data {}else{
let dictionary = NSKeyedUnarchiver.unarchiveObject(with: data! as Data)! as! NSDictionary-swift读取本地文件
if dictionary.count 0 {
UserModel.defaultManage.setValuesForKeys(dictionary as! [String : Any])
if UserModel.defaultManage.token.nullObject() == false {
UserModel.defaultManage.hasLogin = true
}
}
}
}
swift或OC中NSURLConnection finished with error - code -1002
1002说明该请求的url无效。url由于分为远程url(及http或者https请求链接地址)和本地url(及获取的本地文件的链接地址),导致1002报错由于不同的url造成的原因不同。
如果是http请求,则是从iOS9后,默认只支持https请求,如果要支持http请求需要设置;在OC项目的Info.plist中添加App Transport Security Settings设置,并将Allow Arbitrary Loads设置为YES。-swift读取本地文件
获取本地文件的方法用了获取http的方法。
将 URL.init(string: booksFilePath) 换为 URL.init(fileURLWithPath: booksFilePath) 即可。
swift怎么读取本地的html文件
把html文件放在项目路径下,然后:var filepath:NSString = NSBundle.mainBundle().pathForResource("test", ofType: "html")-swift读取本地文件
Swift是苹果公司在WWDC2014上发布的全新开发语言。从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与OC混合使用。
全新的编程语言Swift改变了Obejective-C复杂的语法,并保留了Smalltalk的动态特性,简而言之就是敏捷易用。
swift中为什么获取不到本地的音乐文件的路径
实现获取本地音乐文件的方法的代码如下:
MPMediaQuery *allMp3 = [[MPMediaQuery alloc] init]; // 读取条件
MPMediaPropertyPredicate *albumNamePredicate =
[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];-swift读取本地文件
[allMp3 addFilterPredicate:albumNamePredicate];
NSLog(@"Logging items from a generic query...");
self.allMusicItems = [allMp3 items]; for (MPMediaItem *song in _allMusicItems) {// NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];-swift读取本地文件
NSString *songTitle = song.title;
NSLog (@"%@, %@, %@", songTitle, song.assetURL,song.artist);
}/**
注:
使用 - (id) valueForProperty: (NSString *) property 的方法获取音乐的名称和使用点语法出来的结果是一样的。
这是苹果给出的解释:
MP_EXTERN NSString * const MPMediaItemPropertyPersistentID NS_AVAILABLE_IOS(4_2); // filterable@property (nonatomic, readonly) MPMediaEntityPersistentID persistentID NS_AVAILABLE_IOS(5_0);-swift读取本地文件
MP_EXTERN NSString * const MPMediaItemPropertyMediaType; // filterable@property (nonatomic, readonly) MPMediaType mediaType NS_AVAILABLE_IOS(7_0);-swift读取本地文件
MP_EXTERN NSString * const MPMediaItemPropertyTitle; // filterable@property (nonatomic, readonly, nullable) NSString *title NS_AVAILABLE_IOS(7_0);-swift读取本地文件
MP_EXTERN NSString * const MPMediaItemPropertyAlbumTitle; // filterable@property (nonatomic, readonly, nullable) NSString *albumTitle NS_AVAILABLE_IOS(7_0);-swift读取本地文件
*/