当前位置: 首页 > news >正文

iOS学习之iOS沙盒(sandbox)机制和文件操作(二)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

接上篇 

iOS学习之iOS沙盒(sandbox)机制和文件操作(一)


我们看看如何获取应用程序沙盒目录。包括真机的沙盒的目录。

1、获取程序的Home目录

NSString *homeDirectory = NSHomeDirectory();
    NSLog(@"path:%@", homeDirectory);

打印结果:
2012-06-17 14:00:06.098 IosSandbox[3536:f803] /Users/rongfzh/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2

那在真机上的目录有是怎么样的呢?我们看看

2012-06-17 14:25:47.059 IosSandbox[4281:f803] /var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2

可见,真机上的目录是/var/mobile/Applications/这个目录下的,和模拟器不一样。这个是Home目录,其他的子目录和模拟器一样。


2、获取document目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSLog(@"path:%@", path);
打印结果

2012-06-17 14:00:06.099 IosSandbox[3536:f803] path:/Users/rongfzh/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/Documents
3、获取Cache目录

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSLog(@"%@", path);
打印结果
2012-06-17 14:03:50.431 IosSandbox[3628:f803] /Users/rongfzh/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/Library/Caches

4、获取Library目录

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSLog(@"%@", path);
打印结果
2012-06-17 14:07:17.544 IosSandbox[3733:f803] /Users/rongfzh/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/Library
5、获取Tmp目录
NSString *tmpDir = NSTemporaryDirectory();
    NSLog(@"%@", tmpDir);
打印结果

2012-06-17 14:08:07.824 IosSandbox[3782:f803] /var/folders/g7/246bh79130zblw0yjjtc55cw0000gn/T/
6、写入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
    if (!docDir) {
        NSLog(@"Documents 目录未找到");        
    }
    NSArray *array = [[NSArray alloc] initWithObjects:@"内容",@"content",nil];
    NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
    [array writeToFile:filePath atomically:YES];

注:我们在真机上也运行一下,把文件写入,下一步从真机上把内容读取出来。

写入输入 array ,里面是两个字符串,一会我们读出来打印。

写入我们在程序沙盒目录下看到文件 testFile.txt

 

打开文件看到的内容是这样的,是个xml格式的plist文件,数据格式保存了内容。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<string>内容</string>
	<string>content</string>
</array>
</plist>
7、读取文件

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
    NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
    NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
    NSLog(@"%@", array);
打印结果:

把上面的文件解析后,把内容打印出来了。

2012-06-17 14:14:46.249 IosSandbox[3918:f803] (
    "\U5185\U5bb9",
    content
)

真机上读取并打印文件路径:

2012-06-17 14:25:47.059 IosSandbox[4281:f803] /var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/Documents/testFile.txt

 (

    "\U5185\U5bb9",

    content

)

真机上也能写入和打印。

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢


转载于:https://my.oschina.net/201003674/blog/288850

相关文章:

  • web前段开发工程师如何修成正果?
  • arguments的一些小技巧
  • [\u4e00-\u9fa5] //匹配中文字符
  • js Array 交集 并集 差集 去重
  • 难道生活复杂就那么好玩吗?
  • HTML中设置input等文本框为不可操作
  • 重置Mysql密码SOP
  • Centos 系统禁ping设置
  • 计算机网络--静态路由
  • 白话 Ruby 与 DSL 以及在 iOS 开发中的运用
  • python re正则表达式模块
  • WTL之VS2013环境搭建
  • c语言编写经验逐步积累4
  • Session 和 Cookie 机制
  • C语言中预处理器的相关知识:
  • C++入门教程(10):for 语句
  • JS专题之继承
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Material Design
  • Next.js之基础概念(二)
  • node-glob通配符
  • python_bomb----数据类型总结
  • Spring框架之我见(三)——IOC、AOP
  • vue--为什么data属性必须是一个函数
  • 编写符合Python风格的对象
  • 服务器之间,相同帐号,实现免密钥登录
  • 悄悄地说一个bug
  • 巧用 TypeScript (一)
  • 使用SAX解析XML
  • 通过npm或yarn自动生成vue组件
  • 我建了一个叫Hello World的项目
  • 责任链模式的两种实现
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云服务器如何修改远程端口?
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #14vue3生成表单并跳转到外部地址的方式
  • #includecmath
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (七)Java对象在Hibernate持久化层的状态
  • (七)Knockout 创建自定义绑定
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ..回顾17,展望18
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core跨平台微服务学习资源
  • .Net MVC + EF搭建学生管理系统
  • .NET 中的轻量级线程安全
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net6使用WebSocket与前端进行通信
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试