获取文件大小
int getFileSizeFromPath(char * path)
{
FILE * file;
int fileSizeBytes = 0;
file = fopen(path,"r");
if(file>0){
fseek(file, 0, SEEK_END);
fileSizeBytes = ftell(file);
fseek(file, 0, SEEK_SET);
fclose(file);
}
return fileSizeBytes;
}
or in XCode use the NSFileManager:
NSFileManager * filemanager = [[NSFileManager alloc]init];
if([filemanager fileExistsAtPath:[self getCompletePath] isDirectory:&isDirectory]){
NSDictionary * attributes = [filemanager attributesOfItemAtPath:[self getCompletePath] error:nil];
// file size
NSNumber *theFileSize;
if (theFileSize = [attributes objectForKey:NSFileSize])
_fileSize= [theFileSize intValue];
}
-(IBAction) CreateFile
{
//对于错误信息
NSError *error;
// 创建文件管理器
NSFileManager *fileMgr = [NSFileManager defaultManager];
//指向文件目录
NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
//创建一个目录
[[NSFileManager defaultManager] createDirectoryAtPath: [NSString stringWithFormat:@"%@/myFolder", NSHomeDirectory()] attributes:nil];
// File we want to create in the documents directory我们想要创建的文件将会出现在文件目录中
// Result is: /Documents/file1.txt结果为:/Documents/file1.txt
NSString *filePath= [documentsDirectory
stringByAppendingPathComponent:@"file2.txt"];
//需要写入的字符串
NSString *str= @"iPhoneDeveloper Tips\nhttp://iPhoneDevelopTips,com";
//写入文件
[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
//显示文件目录的内容
NSLog(@"Documentsdirectory: contentsOfDirectoryAtPath:documentsDirectory error:&error]);
}
2、对文件重命名
对一个文件重命名
想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。
//通过移动该文件对文件重命名
NSString *filePath2= [documentsDirectory
stringByAppendingPathComponent:@"file2.txt"];
//判断是否移动
if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)
NSLog(@"Unable to move file: %@", [error localizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
3、删除一个文件
为了使这个技巧完整,让我们再一起看下如何删除一个文件:
//在filePath2中判断是否删除这个文件
if ([fileMgr removeItemAtPath:filePath2 error:&error] != YES)
NSLog(@"Unable to delete file: %@", [error localizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
一旦文件被删除了,正如你所预料的那样,文件目录就会被自动清空:
这些示例能教你的,仅仅只是文件处理上的一些皮毛。想要获得更全面、详细的讲解,你就需要掌握NSFileManager文件的知识。
4、删除目录下所有文件
//获取文件路径
- (NSString *)attchmentFolder{
NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [document stringByAppendingPathComponent:@"Attchments"];
NSFileManager *manager = [NSFileManager defaultManager];
if(![manager contentsOfDirectoryAtPath:path error:nil]){
[manager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
}
return path;
}
--清除附件
BOOL result = [[NSFileManager defaultManager] removeItemAtPath:[[MOPAppDelegate instance] attchmentFolder] error:nil];
IPhone中获取文件各项属性方法
-(NSData *)applicationDataFromFile:(NSString *)fileName
{
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentsDirectory =[paths objectAtIndex:0];
NSString *appFile =[documentsDirectory stringByAppendingPathComponent:fileName];
NSData *data =[[[NSData alloc]initWithContentsOfFile:appFile]autorelease];
return data;
}
-(void)getFileAttributes
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *path = @"/1ct.rtf";
NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:path traverseLink:YES];
NSLog(@"@@");
if (fileAttributes != nil) {
NSNumber *fileSize;
NSString *fileOwner, *creationDate;
NSDate *fileModDate;
//NSString *NSFileCreationDate
//文件大小
if (fileSize = [fileAttributes objectForKey:NSFileSize]) {
NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]);
}
//文件创建日期
if (creationDate = [fileAttributes objectForKey:NSFileCreationDate]) {
NSLog(@"File creationDate: %@\n", creationDate);
//textField.text=NSFileCreationDate;
}
//文件所有者
if (fileOwner = [fileAttributes objectForKey:NSFileOwnerAccountName]) {
NSLog(@"Owner: %@\n", fileOwner);
}
//文件修改日期
if (fileModDate = [fileAttributes objectForKey:NSFileModificationDate]) {
NSLog(@"Modification date: %@\n", fileModDate);
}
}
else {
NSLog(@"Path (%@) is invalid.", path);
}
}
///////////////////
文件类型,文件缩略图呢???
============================
//获取当前应用程序的主目录
NSString directoryPath =NSHomeDirectory();
//获取当前目录下的所有文件
NSArray directoryContents = [[NSFileManager defaultManager] directoryContentsAtPath: directoryPath];
//获取一个文件或文件夹
NSString *selectedFile = (NSString*)[directoryContents objectAtIndex: indexPath.row];
//拼成一个完整路径
[directoryPath stringByAppendingPathComponent: selectedFile];
BOOL isDir;
//判断是否是为目录
if ([[NSFileManager defaultManager] fileExistsAtPath:selectedPath isDirectory:&isDir] && isDir)
{//目录
}
else
{//文件
}
//日期格式化
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
//数字格式化
NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
[numberFormatter setPositiveFormat: @"#,##0.## bytes"];
//获取文件属性
NSDictionary *fileAttributes =[[NSFileManager defaultManager] fileAttributesAtPath: directoryPath traverseLink: YES];
//获取文件的创建日期
NSDate *modificationDate = (NSDate*)[fileAttributes objectForKey: NSFileModificationDate];
//获取文件的字节大小
NSNumber *fileSize = (NSNumber*)[fileAttributes objectForKey: NSFileSize];
//格式化文件大小
nsstring A = [numberFormatter stringFromNumber: fileSize];
//格式化文件创建日期
NSstring B =[dateFormatter stringFromDate: modificationDate];
[numberFormatter release];
[dateFormatter release];
//读取文件内容操作- (void) loadFileContentsIntoTextView{
//通过流打开一个文件
NSInputStream *inputStream = [[NSInputStream alloc] initWithFileAtPath: filePath];
[inputStream open];
NSInteger maxLength = 128;
uint8_t readBuffer [maxLength];
//是否已经到结尾标识
BOOL endOfStreamReached = NO;
// NOTE: this tight loop will block until stream ends
while (! endOfStreamReached)
{
NSInteger bytesRead = [inputStream read: readBuffer maxLength:maxLength];
if (bytesRead == 0)
{//文件读取到最后
endOfStreamReached = YES;
}
else if (bytesRead == -1)
{//文件读取错误
endOfStreamReached = YES;
}
else
{
NSString *readBufferString =[[NSString alloc] initWithBytesNoCopy: readBuffer length: bytesRead encoding: NSUTF8StringEncoding freeWhenDone: NO];
//将字符不段的加载到视图
[self appendTextToView: readBufferString];
[readBufferString release];
}
}
[inputStream close];
[inputStream release];
}
异步文件读取 在网络方面,网络的不可靠性可能会造成上面方法的阻塞
nsstream是可以异步工作的。可以注册一个在流中有字节可读的时候回调的函数,如果没有可读的,就不要阻塞住
相关推荐
iOS文件管理笔记,沙盒,NSFileManager,NSFileHandle
Cocoa提供了NSFileManager、NSFileHandle等类来操作文件,而Core Data则是Apple推荐的数据持久化框架,它简化了数据库操作,支持实体关系模型和图形化数据模型编辑。 最后,书中会探讨一些高级主题,如多线程编程、...
说明:自定义文件类,通过NSFileManager 以及NSFileHandle 实现文件的创建和copy,为了控制内存的并发使用,通过控制每次赋值的固定长度来分多次复制: NSString * path=NSHomeDirectory(); path =[path ...
`NSData`可以将文件内容转换成二进制数据,`NSFileHandle`用于打开和读取文件,而`NSFileManager`则用于检查文件是否存在、获取文件路径等操作。如果在无界面环境下出现问题,可能是没有正确配置文件路径,或者在...
在文件系统操作方面,Foundation框架提供了NSFileManager类,可以用于文件的创建、删除、复制、移动等操作,以及NSFileHandle类,用于读写文件内容。对于持久化存储,NSKeyedArchiver和NSKeyedUnarchiver可以实现...
这包括使用NSFileManager进行文件和文件夹的创建、删除、改变和遍历操作,NSFileHandle用于文件的读取、写入和拷贝操作,以及如何通过NSBundle获取资源信息等。 协议和分类是Objective-C中用于扩展和重用代码的机制...
在处理文件读写和数据持久化方面,Foundation框架提供了`NSFileManager`类来管理文件和目录,以及`NSFileHandle`类来处理文件流。同时,框架中的`NSKeyedArchiver`和`NSKeyedUnarchiver`类支持对象的归档和解归档,...
- 文件读写:使用`NSFileManager`、`NSFileHandle`等类进行文件操作。 - 归档和序列化:`NSKeyedArchiver`和`NSKeyedUnarchiver`用于对象的持久化存储。 7. **复制对象、归档与单例**: - `NSCopying`协议:实现...
第十四章涉及文件操作,包括使用NSFileManager管理文件和目录、NSData类、路径操作、文件基本操作以及NSFileHandle、NSURL和NSBundle类。 第十五章介绍了内存管理与自动引用计数(ARC)。包括手动引用计数、对象...
### 方案一:利用NSURLConnection和NSFileHandle 在iOS 9之前,NSURLConnection是进行网络请求的主要方式。对于大文件下载,我们可以利用其代理方法和NSFileHandle来实现断点下载。 1. **发送请求**: 首先,我们...
- **文件和目录操作**:Objective-C提供了丰富的API来操作文件和目录,如`NSFileManager`和`NSFileHandle`等。 - **学生信息管理系统**:通过实现一个小型的学生信息管理系统,巩固前面所学的知识点,涉及面向对象...
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5([fileHandle readDataOfLength:CC_MD5_DIGEST_LENGTH], CC_MD5_DIGEST_...
应用程序基础框架1157.1 字符串处理1157.2 容器1197.2.1 NSArray1197.2.2 NSDictionary1217.2.3 NSSet1237.2.4 NSIndexSet1247.3 运行循环和定时器1257.4 通告1287.5 程序包1317.6 处理文件1327.6.1 ...
- **NSFileManager**:用于管理文件系统的类。 - **NSFileHandle**:用于处理文件流。 ### 52. 协议 - **协议**:定义了一组方法签名,用作接口的规范。 - **NSNotification**:用于发送和接收通知。 ### 53. 模块...