01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert
模型
1 将数据存储到硬盘,将硬盘上的数据在读回内存
2 文件存储:
NSFileHandle 对文件的读写
NSData 二进制数据
NSString 表示文件路径
NSFileManager(对文件的操作创建、删除、改名、是不是文件夹)
【day0101_NSString】:NSString读取存储用法
NSString 路径用于表达文件的位置(/User/Apple/yz/docu...)
相对路径 apple/
绝对路径 /User/Apple
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *path = @"/Users/tarena/yz/day01";
NSString *path2 = [path stringByAppendingPathComponent:@"use"]; // 生成新的字符串
NSLog(@"%@",[path stringByAppendingPathComponent:@"use"]);
// 拆分一个路径的component
NSArray *components = [path pathComponents];
[components enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@",obj);
}];
// /User/apple/documents/ios core
// -> day20/nsstring/nsstring/main.m
NSString *path3 = @"/User/apple/documents/ios core";
NSString *path4 = @"day20/nsstring/nsstring/main.m";
NSString *newPath = [path3 stringByAppendingPathComponent:path4];
NSLog(@"%@",newPath);
// 追加文件后缀
path = [path stringByAppendingPathComponent:@"111"];
path = [path stringByAppendingPathExtension:@"jpg"]; // 补.
NSLog(@"%@",path);
// 取出文件的扩展名
path = @"/user/yz/a.jpg";
path = [path pathExtension];
NSLog(@"%@",path);
// 单词首字母大写
path = @"i love obc";
path = [path capitalizedString];
NSLog(@"%@",path);
path = [path uppercaseString]; // 全部大写
path = [path lowercaseString]; // 全部小写
NSLog(@"%@",path);
int i = [path hash];
NSLog(@"%d",i);
// 获取文件名或文件夹名
path = @"/use/sdg/gg.jpg";
NSLog(@"%@",[path lastPathComponent]);
// 获取父目录
path = @"/a/b/c/d.jpg";
NSLog(@"%@",[path stringByDeletingLastPathComponent]);
NSLog(@"%@",[path stringByDeletingPathExtension]);// 去除扩展名 /a/b/c/d
}
【day0102_NSFileManager】:文件管理器
NSFileManager(对文件的操作创建、删除、改名、是不是文件夹)
fileExistsAtPath 检测文件是否存在并判断是否是文件夹
createDirectoryAtPath 参数YES表示如果创建文件夹时如果中间没有那个文件夹会自动创建
- (void)viewDidLoad
{
[superviewDidLoad];
self.fileManager = [NSFileManagerdefaultManager];
// 检查文件是否存在
NSString *path = @"/Users/tarena/yz/第一阶段(OC-Fd)/Foundation";
if ([self.fileManagerfileExistsAtPath:path]) {
NSLog(@"文件存在");
}
BOOL isDirectory = NO;
if ([self.fileManagerfileExistsAtPath:path isDirectory:&isDirectory]) {
if (isDirectory) {
NSLog(@"是文件夹");
}
}
// 创建文件夹
NSString *createDirectory = @"/Users/tarena/Desktop";
// 参数YES表示如果创建文件夹时如果中间没有那个文件夹会自动创建
[self.fileManagercreateDirectoryAtPath:[createDirectory stringByAppendingPathComponent:@"myDirectory/dir/dir/dir"] withIntermediateDirectories:YESattributes:Nilerror:Nil]; // 如果用NO那么创建文件夹的父文件必须存在才能创建
// 练习
// /Users/tarena/yz/第三阶段(UI核心_Model赵哲)/day01
// QQ/Users
// 10086
// images
// cache
// download
// history
// 10010
// images
// cache
// download
// history
// 10000
// images
// cache
// download
// history
NSString *rootPath = @"/Users/tarena/yz/第三阶段(UI核心_Model赵哲)/day01";
NSString *usersDirectory = @"QQ/Users";
NSArray *users = @[@"10086",@"10010",@"10000"];
NSArray *directorys = @[@"images",@"cache",@"download",@"history"];
for (NSString *user in users) {
for (NSString *directory in directorys) {
[self.fileManagercreateDirectoryAtPath:[rootPath stringByAppendingPathComponent:[usersDirectory stringByAppendingPathComponent:[user stringByAppendingPathComponent:directory]]] withIntermediateDirectories:YESattributes:Nilerror:Nil];
}
}
NSString *path2 = @"/Users/tarena/Desktop";
NSArray *directoryArray = [self.fileManagercontentsOfDirectoryAtPath:path2 error:Nil];
NSLog(@"%@",directoryArray);
// 遍历文件夹下所有的子文件夹
for (NSString *subDirectory in directoryArray) {
NSString *directoryPath = [path2 stringByAppendingPathComponent:subDirectory];
BOOL isDirectory = NO;
if ([self.fileManagerfileExistsAtPath:directoryPath isDirectory:&isDirectory] && isDirectory) {
NSLog(@"子文件夹名:%@",subDirectory);
}
}
}
【day0103_Sandbox】:Sandbox沙箱
NSHomeDirectory() 获取app根路径
[[NSBundle mainBundle] resourcePath] 获取沙箱根路径
// 获取app根路径
NSString *homePath = NSHomeDirectory();
NSLog(@"%@",homePath);
// 获取沙箱根路径
NSString *bundle = [[NSBundlemainBundle] resourcePath];
NSLog(@"%@",bundle);
// 使用fileManagager获取documents路径
NSFileManager *fileManager = [NSFileManagerdefaultManager];
NSArray *urls = [fileManager URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask];
NSURL *url = urls[0];
NSString *documentsPath = [url path]; // 发送path消息将url转为字符串
NSLog(@"%@",documentsPath);
// 获取缓存目录
NSURL *url2 = [fileManager URLsForDirectory:NSCachesDirectoryinDomains:NSUserDomainMask][0];
NSLog(@"%@",[url2 path]);
// 获取tmp目录
NSString *tmpPath = NSTemporaryDirectory();
NSLog(@"%@",tmpPath);
【day0104_Note便签】
保存和读取
- (IBAction)barButtonReadNote:(id)sender {
NSString *notePath = [NSHomeDirectory() stringByAppendingPathComponent:@"note.txt"];
NSString *stringNote = [NSStringstringWithContentsOfFile:notePath encoding:NSUTF8StringEncodingerror:Nil];
self.textViewNote.text = stringNote;
}
- (IBAction)barButtonSaveNote:(id)sender {
NSString *stringNote = self.textViewNote.text;
NSString *notePath = [NSHomeDirectory() stringByAppendingPathComponent:@"note.txt"];
[stringNote writeToFile:notePath atomically:YESencoding:NSUTF8StringEncodingerror:Nil];
self.textViewNote.text = @"";
}
【day0105_StringAndObject】:字符串和对象之间的转换
/*
作业
0. 复习
1. TMessage 保存
读取
Documents/messages.txt
1|TXT|今天真高兴
0|TXT|那真是太好了
1|TXT|你在干什么?
0|TXT|我正在帮助全世界的人过上更好的生活
1|TXT|这么好
0|TXT|谢谢你的夸奖,我都害羞了,呵呵
文件 -> 字符串 -> 数组(字符串) -> 数组(对象) -> TRMessageViewController
存储*
点击发送的时候
1) 数组增加对象
2) tableview插入动画
insertRowsAtIndexPathes:withRowAnimation:
3) 把数组的对象翻译成换行的字符串
4) 写入文件
*/
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *home = NSHomeDirectory();
NSLog(@"%@",home);
// 文件 -> 字符串
NSFileManager *fileManager = [NSFileManagerdefaultManager];
NSString *documentPath = [[fileManager URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask][0] path];
NSLog(@"%@",documentPath);
NSString *stringFromFile = [NSStringstringWithContentsOfFile:[documentPath stringByAppendingPathComponent:@"messages.txt"] encoding:NSUTF8StringEncodingerror:Nil];
NSLog(@"%@",stringFromFile);
// 字符串 -> 数组(字符串)
NSArray *arrayFromString = [stringFromFile componentsSeparatedByString:@"\n"];
NSLog(@"%@",arrayFromString);
// 数组(字符串) -> 数组(对象)
for (NSString *string in arrayFromString) {
NSArray *messageFromString = [string componentsSeparatedByString:@"|"];
MXMessagesViewController *messageViewController = [[MXMessagesViewControlleralloc] init];
messageViewController.message = messageFromString[2];
messageViewController.state = messageFromString[0];
}
}
01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert的更多相关文章
- NSData和NSString 、 NSFileManager
1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,length ...
- NSData、NSString 、 NSFileManager
1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,leng ...
- CSS.01 -- 选择器及相关的属性文本、文字、字体、颜色、
与html相比,Css支持更丰富的文档外观,Css可以为任何元素的文本和背景设置颜色:允许在任何元素外围设置边框:允许改变文本的大小,装饰(如下划线),间隔,甚至可以确定是否显示文本. 什么是CSS? ...
- Hinge Loss、交叉熵损失、平方损失、指数损失、对数损失、0-1损失、绝对值损失
损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示.损失函数越小,模型的鲁棒性就越好. 损失 ...
- swift 基础小结01 --delegate、Optional、GCD的使用、request请求、网络加载图片并保存到沙箱、闭包以及桥接
本文主要记录swift中delegate的使用.“?!”Optional的概念.GCD的使用.request请求.网络加载图片并保存到沙箱.闭包以及桥接. 一.delegate的使用 swift中de ...
- JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合
1. 学习计划 第一天: 1.电商行业的背景. 2.宜立方商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建-后台工程 a) 使用maven搭建工程 b) 使用maven的tomcat插件启 ...
- 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息
0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...
- 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权
数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...
- python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...
- C#基础知识01(continue、break 和 return、ref 和 out)
break[跳出循环或者退出一个switch语句]由于它是用来退出循环或者switch语句的,所以只有当它出现在这些语句中时才是合法的. continue 语句和break语句相似,只是它不是退出一个 ...
随机推荐
- Extending your SharePoint 2007 site with Microsoft ASP.NET AJAX 3.5
After ASP.NET 3.5 has been installed you need to modify the web.config file of your MOSS web site wi ...
- 3.3 用NPOI操作EXCEL--生成一张工资单
这一节,我们将综合NPOI的常用功能(包括创建和填充单元格.合并单元格.设置单元格样式和利用公式),做一个工资单的实例.先看创建标题行的代码: //写标题文本 HSSFSheet sheet1 = h ...
- webform基础介绍及页面传值(session,cookie)、跳转页面
一,IIS 1.首先知道IIS是个什么东西:它是web服务器软件,安装在服务器上,接受客户端发来的请求,并传送给服务器端,然后响应请求并送回给客户端.类似于饭店里的服务员. 2.会安装IIS——控制面 ...
- 【转】windows上自动设置java环境变量的脚本
转载:http://www.cnblogs.com/flowwind/p/4066146.html 近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要 设置java环境变量,ja ...
- NSArray的4种遍历方式
前言:NSArray对应的是java的List,不同的是其元素不能更改,不过其派生类NSMutableArray可以更改,遍历的方式跟java的List基本一样 一. for循环 Student * ...
- eclipse(MyEclipse)插件之aptana安装
1.在MyEclipse安装目录下创建文件夹, aptana2.在aptana文件夹下创建文件夹eclipse3.将aptana_update_024747.zip中的文件解压缩到aptana\ecl ...
- 关于 IE firefox Chrome下的通过用js 关闭窗口的一些问题
首先IE是可以通过window.close()来关闭浏览器窗口的,但是在firefox和Chrome下是无效的,原因在于: ~~~ie可直接<button onclick="windo ...
- 在word中批量制作条形码
条码打印软件可以批量生成条形码然后直接打印,但是有些客户不需要直接打印,而是想将生成的条形码在word中进行排版,发给自己的客户或者下属部门来打印.那么如何实现在word中批量制作条形码呢? 操作很简 ...
- 首届全球RTB(实时竞价)广告DSP算法大赛
首届全球RTB(实时竞价)广告DSP算法大赛 竞赛指南 RTB (Real Time Bidding, 实时竞价) 是近年来计算广告领域最激动人心的进展之一. 它增加了展示广告的透明度与效率, ...
- OpenStack导入镜像后Launch不起来的几个问题
Dashboard上显示state为error 没有其他报错 用nova list找到虚拟机的id 然后nova show,可以得到fault详细信息 也可以查看下面两个log /var/log/no ...