美文网首页
iOS 数组用c代码写文件与查看沙盒文件

iOS 数组用c代码写文件与查看沙盒文件

作者: Orely | 来源:发表于2017-02-27 15:48 被阅读0次

背景:

最近遇到个问题,在获取航拍实时数据做图像处理的时候,有时候处理结果不正确(图像中有目标物,没有识别出来)。就需要在画面上添加一个按钮,点击来保存当时的画面到沙盒中。

但是,写入的数据,需要放到Matlab下生成图片。所以,使用OC自带的writeToFile不方便实用。(将Array writeToFile 到 txt后,里面的格式是XML。。。)


1、首先获取当前时间,用作文件名来区分保存的文件。

```

NSString*timeStr = [NSStringstringWithFormat:@"%@",[NSDatedate]];

```

2、获取文件路径

```

// 获取沙盒documents路径

NSMutableString *documentsPath = [NSMutableString stringWithString:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];

// 拼接成对应的文件路径名

[documentsPath appendFormat:@"/rData_%@.txt",timeStr];

```

3、NSString转成C的指针string

const char *filePath = [documentsPath UTF8String];


4、打开文件(若不存在则创建文件)

//        "w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

//        "w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

//        "a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

//        "a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

FILE *fp = fopen(filePath, "w+");


5、写入

// _RArray数据是 NSNumber numberWithInt: 写入,对应用intValue取出来

int a =[_RArray[j][k] intValue];

fprintf(fp, "%d\t", a);


6、关闭文件

fclose(fp);


由于有RGB三个通道,循环三次依次写入三个文件。完整代码如下

NSString *timeStr = [NSString stringWithFormat:@"%@",[NSDate date]];

for (NSInteger i = 1; i <= 3; i++)

{

// 获取路径

NSMutableString *documentsPath = [NSMutableString stringWithString:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];

switch (i) {

case 1:

[documentsPath appendFormat:@"/rData_%@.txt",timeStr];

break;

case 2:

[documentsPath appendFormat:@"/gData_%@.txt",timeStr];

break;

case 3:

[documentsPath appendFormat:@"/bData_%@.txt",timeStr];

break;

default:

break;

}

const char *filePath = [documentsPath UTF8String];

NSLog(@"documentsPath : %@",documentsPath);

FILE *fp = fopen(filePath, "w+");

switch (i)

{

case 1:

for (NSInteger j = 0; j < _RArray.count; j++) {

for (NSInteger k = 0; k < [_RArray[0] count]; k++) {

int a =[_RArray[j][k] intValue];

//                            printf("%d\t",a);

fprintf(fp, "%d\t", a);

}

fprintf(fp, "\n");

}

break;

case 2:

for (NSInteger j = 0; j < _GArray.count; j++) {

for (NSInteger k = 0; k < [_GArray[0] count]; k++) {

int a =[_GArray[j][k] intValue];

fprintf(fp, "%d\t", a);}

fprintf(fp, "\n");

}

break;

case 3:

for (NSInteger j = 0; j < _BArray.count; j++) {

for (NSInteger k = 0; k < [_BArray[0] count]; k++) {

int a =[_BArray[j][k] intValue];

fprintf(fp, "%d\t", a);}

fprintf(fp, "\n");

}

break;

default:

break;

}

fclose(fp);



查看写入到沙盒的文件

打开Xcode,将手机与Mac通过数据线连接 点击Window -> Devices 或者 cmd + Shift + 2 在弹出的页面,选择你的手机,应用 下拉进度条,点击设置按钮 选择Download Container... 保存 显示包内容 找到写入的文件

相关文章

  • iOS 数组用c代码写文件与查看沙盒文件

    背景: 最近遇到个问题,在获取航拍实时数据做图像处理的时候,有时候处理结果不正确(图像中有目标物,没有识别出来)。...

  • iOS沙盒管理工具FHHSandBoxViewer

    KeyWord:沙盒文件递归遍历、Swift里的闭包多个weak修饰、iOS使用AirDrop iOS沙盒查看器F...

  • iOS 查看沙盒文件

    需求: 在开发过程中,如果需要把数据写入到本地沙盒,在用模拟器很容易就能检查是否写入成功,但是如果在真机上,到怎么...

  • 2021-03-09

    使用libimobiledevice + ifuse提取iOS沙盒文件[https://www.cnblogs.c...

  • iOS数据存储之应用程序沙盒

    应用程序沙盒 iOS应用程序只能在系统为该应用所分配的文件区域下读/写文件,这个文件区域就是沙盒.沙盒机制:一种安...

  • 沙盒

    一、iOS沙盒机制介绍(1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 ...

  • iOS开发 --查看真机运行后的沙盒数据

    一、模拟器 对于iOS模拟器中的沙盒数据查看,我们可以通过打印文件沙盒路径,然后“ Finder --> ...

  • iOS开发-隐私权限

    背景 iOS的安全机制——沙盒限制了应用程序执行各种操作的权限。沙盒实际就是程序的系统文件目录,非代码文件都在此保...

  • 不让iCloud 和 iTunes同步沙盒里指定文件

    iOS沙盒Documents目录下的文件默认会被iCloud 和 iTunes同步。可以通过代码指定某个文件或者文...

  • iOS本地沙盒文件读取浏览下载,日志读取下载

    传统沙盒文件读取方式 谈到iOS本地沙盒文件读取下载,给人的初步印象是苹果对应用下面的沙盒文件管理严格,只能通过已...

网友评论

      本文标题:iOS 数组用c代码写文件与查看沙盒文件

      本文链接:https://www.haomeiwen.com/subject/lghawttx.html