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,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
随机推荐
- C++,C#,Python
1.C++的思路:无论是基本类型,还是类类型,对象的传递提供了两种方式,一个是整体拷贝,一个是复制引用.整体拷贝对应着copy构造和copy赋值,复制引用就是通过引用或者指针实现的,当然指针本身还是整 ...
- C#小常识集锦(一)--《更锋利的CSharp代码》读书笔记
❀.采用类似匈牙利命名法为控件命令,对于其他变量申明则不需要了 e.g. Button btnAdd; e.g. TextBox txtUsername; e.g. ListBox lstFileNa ...
- CCBReader
#ifndef _CCB_CCBREADER_H_ #define _CCB_CCBREADER_H_ #include "cocos2d.h" #include "Ex ...
- 使用Java高速实现进度条
基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...
- C#_在.net中序列化读写xml方法的总结
阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数 ...
- yeelink使用笔记
一.触发条件设置 下面是我在群113978926里获得的解释: 摩斯电码<pengdonglin137@qq.com> 13:15:26 触发规则有什么限制吗怎么我设置的条件有时候无效呢 ...
- 深入理解C语言中的指针与数组之指针篇(转载)
前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...
- PHP.3-DIV+CSS标准网页布局准备工作(上)
DIV+CSS标准网页布局准备工作(上) 概述 使用"DIV+CSS"对网站进行布局符合W3C标准,采用这种方式布局通常是为了说明与HTML表格定位方式的区别.因为现在的网站设计标 ...
- Cheap CK100 1024 tokens NXP FIX Chip on Eobd2
CK100 is a well-known and cost-effective key programmer for many cars. Some said it is a must for bo ...
- poj2299解题报告(归并排序求逆序数)
POJ 2299,题目链接http://poj.org/problem?id=2299 题意: 给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列. 思路: 其实就 ...