文件夹 *** 作大全(swift)

文件夹 *** 作大全(swift),第1张

iOS开发遇到读文件,写文件等,对文件和文件夹的 *** 作,这时就可以使用FileManager,FileHandle等类来实现。下面总结了各种常用的 *** 作:

假设用户文档下Document有如下文件和文件夹:test1.txt、fold1/test2.txt

(1)首先我们获取用户文档目录路径

(2). 对指定路径执行浅搜索,返回指定目录路径下的文件、子目录及符号链接的列表

(3). 类似上面的,对指定路径执行浅搜索,返回指定目录路径下的文件、子目录及符号链接的列表

(4). 深度遍历,会递归遍历子文件夹(但不会递归符号链接)

(5). 类似上面的,深度遍历,会递归遍历子文件夹(但不会递归符号链接)

(6). 深度遍历,会递归遍历子文件夹(包括符号链接,所以要求性能的话用enumeratorAtPath)

方式1:

方式2:

可以通过write(to:)方法,可以创建文件并将对象写入,对象包括String,NSString,UIImage,NSArray,NSDictionary等。

(1)把String保存到文件

(2)把图片保存到文件路径下

(3)把NSArray保存到文件路径下

(4)把NSDictionary保存到文件路径下

(1)方法1

(2)方法2

(1)方法1

(2)方法2

(1)方法1

(2)方法2

(1)方法1:获取所有文件,然后遍历删除

(2)方法2:删除目录后重新创建该目录

从 attributes 中获取具体的属性:

    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!

        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!

        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

           

            if dictionary.count >0  {

                UserModel.defaultManage.setValuesForKeys(dictionary as! [String : Any])

                if UserModel.defaultManage.token.nullObject() == false {

                    UserModel.defaultManage.hasLogin = true

                }

            }

           

        }

      

    }

如果你查看苹果的UIKit参考手册,你会看到许多的控件像 UILabel 和 UIWebView 是直接继承于UIView的。尽管如此,还是有一些棘手的事情,像 UIButton 和UISwitch 是继承于 UIControl ,像如下的层级关系所示:注意:如果你想查看一个完整的UI组件类层级示意图,请阅读UIKit Framework Reference。UIControl 使用的是target-action pattern机制,这是一种用于通知用户信息改变的机制。 UIControl 也具有很多的属性来表示当前的控制状态。在这个自定义控件中将使用target-action pattern,所以 UIControl 将担当重要的起始点。在项目导航中右击CustomSliderExample组然后选择New File…,选择iOS/Source/Cocoa Touch Class模板点击Next。类取名为RangeSlider,在Subclass of中输入 UIControl 并且确保语言选择为Swift。点击下一步然后选择Create以使用默认位置来保存新类。尽管写代码是件漂亮的事,你可能想看看你的控件在实际屏幕上显示的效果来了解项目的进展!在你写其他代码之前,你可以先将控件添加到view controller中以便我们随时查看控件制作的进展程度。打开ViewController.swift替换如下: import UIKitclassViewController: UIViewController {let rangeSlider = RangeSlider(frame: CGRectZero)override func viewDidLoad() {super.viewDidLoad()rangeSlider.backgroundColor = UIColor.redColor()view.addSubview(rangeSlider)}override func viewDidLayoutSubviews() {let margin: CGFloat = 20.0let width = view.bounds.width - 2.0 * marginrangeSlider.frame = CGRect(x: margin, y: margin + topLayoutGuide.length,width: width, height: 31.0)}}上面的代码简单的创建了一个指定过大小的全新控件的实例并且将实例添加到了视图内。控件的背景颜色已经被设置成红色这样可以使其和应用的背景形成鲜明的对比。如果你不将背景设置成红色,你的控件将不容易被找到,你将怀疑你的控件去哪了!:]运行app;你将看到和下图一样的画面:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12112199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存