OC10_文件练习
//
// TextHander.h
// OC10_文件练习
//
// Created by zhangxueming on 15/6/19.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface TextHander : NSObject + (void)replaceStringInTextFile:(NSString *)path withOldString:(NSString *)dstString toNewString:(NSString *)newString; + (void)replaceStringInDirectory:(NSString *)path withOldString:(NSString *)dstString toNewString:(NSString *)newString fileType:(NSString *)type; @end
//
// TextHander.m
// OC10_文件练习
//
// Created by zhangxueming on 15/6/19.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "TextHander.h" @implementation TextHander + (void)replaceStringInTextFile:(NSString *)path withOldString:(NSString *)dstString toNewString:(NSString *)newString
{
//备份文件 /name /name_bak
NSFileManager *fm = [NSFileManager defaultManager];
[fm copyItemAtPath:path toPath:[path stringByAppendingString:@"_bak"] error:nil];
//1.创建文件句柄
NSFileHandle *fh = [NSFileHandle fileHandleForUpdatingAtPath:path]; //2.读取文件
NSData *data = [fh readDataToEndOfFile];
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//3.替换内容
dataString = [dataString stringByReplacingOccurrencesOfString:dstString withString:newString];
//4.文件清空
[fh truncateFileAtOffset:];
//5.写文件
[fh writeData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
//6.同步文件
[fh synchronizeFile];
//7.关闭文件
[fh closeFile];
} + (void)replaceStringInDirectory:(NSString *)path withOldString:(NSString *)dstString toNewString:(NSString *)newString fileType:(NSString *)type
{
//1.遍历目录
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *contents = [fm subpathsOfDirectoryAtPath:path error:nil];
// /dic/filename.txt
//2.遍历数组 找到指定类型的文件
for (NSString *item in contents) {
NSString *name = [item pathExtension];
if ([name isEqualToString:type]) {
[self replaceStringInTextFile:[path stringByAppendingFormat:@"/%@",item] withOldString:dstString toNewString:newString];
}
}
} @end
//
// main.m
// OC10_文件练习
//
// Created by zhangxueming on 15/6/19.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "TextHander.h" //把path指定的文件中的字符串 "him" 替换为 "me” //[LZXTextHandle replaceStringInTextFile:FILE_PATH withOldString:@"him" toNewString:@"me"];
//以下代码的作用:
//把path指定的文件夹中的txt文件中的字符串"him"替换为字符串"me" //[LZXTextHandle replaceStringInDirectory:DIR_PATH withOldString:@"him" toNewString:@"me" fileType:@"txt"];
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
//NSLog(@"Hello, World!");
//[TextHander replaceStringInTextFile:@"/Users/zhangxueming/Desktop/Test/3.txt" withOldString:@"him" toNewString:@"me"];
[TextHander replaceStringInDirectory:@"/Users/zhangxueming/Desktop/Test" withOldString:@"him" toNewString:@"me" fileType:@"txt"]; }
return ;
}
OC10_文件练习的更多相关文章
- Mapreduce的文件和hbase共同输入
Mapreduce的文件和hbase共同输入 package duogemap; import java.io.IOException; import org.apache.hadoop.co ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- SQL Server中的高可用性(2)----文件与文件组
在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...
- C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
随机推荐
- Andoird Studio 错误: 非法字符: '\ufeff' 解决方案。
从网上下载一个安卓UI模板,导入到AndroidStudio的时候提示MainActivity非法字符: '\ufeff' 解决方案,细细一想编译器没报错,但编译出错,应该是隐蔽字符BOM的问题,于是 ...
- contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...
- Educational Codeforces Round 1 A. Tricky Sum 暴力
A. Tricky Sum Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598/problem ...
- POJ 3261 Milk Patterns 可重复k次的最长重复子串
Milk PatternsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3261 Description ...
- 使用C#开发纽曼USB来电小秘书客户端小结
在前面用C#开发完CRM的来电弹屏之后,有些客户有了新的要求,他们希望不但能够实现来电弹屏,更希望能够将呼入呼出的电话录音并上传到CRM服务器上,方便日后跟踪记录.于是便有了来电小秘书客户端的开发. ...
- 【VBA研究】怎样将单元格数据赋给数组
作者:iamlaosong 将工作表中的数据赋给数组或者将数组的数据赋给工作表,一般有两种.一种是循环的方法,一个一个的传,这样的方法一般用于须要对每一个数据特别处理的场合,还有一种是一次性用赋值语句 ...
- iOS开发——动画篇Swift篇&常用动画总结
UIView动画: UIView动画时最基本的动画,是直接对我们界面上控件进行简单的动画效果实现,如果你只需要用到一些简单的效果,那么这个很适合你,关于UIView动画实现恨简单, UIKit直接将动 ...
- PhpStorm, XDebug, and DBGp Proxy
phpstorm 利用 xdebug.dbgp-proxy配置远程调试 1.单客户机远程调试 a.安装xdebug库文件(windows:php_xdebug.dll;linux:php_xdebug ...
- [原]Sql脚本压缩类。
精简的美丽 /* * Sql脚本压缩类. * 去掉sql语句中多余的空格,以减少sql脚本的文本长度 * * Author : goldli@163.com * DateTime : 2015/07/ ...
- objective-c对NSArray的学习
转自:http://gekie.iteye.com/blog/1086256 NSARRAY简单的使用 定义数组,遍历数组: 1 2 3 4 5 6 7 8 NSArray *array; array ...