iOS 实现文件的拷贝

//

//  main.m

//  filecopy

//

//  Created by GuoYule on 15/2/19.

//  Copyright (c) 2015年 GuoYule. All rights reserved.

//

#import <Foundation/Foundation.h>

//实现文件的拷贝

#define SRCPATH @"/Users/guoyule/Desktop/emailreceipt_20150214R3887454299_new.pdf"

#define DSTPATH @"/Users/guoyule/Desktop/emailreceipt_20150214R3887454299_new1.pdf"

#define PERROR (error) if(error){NSLog(@"%@",error);exit(-1);}

#define BUFF 100

//缓冲区大小

int main(int argc, const char * argv[]) {

@autoreleasepool {

//所谓文件拷贝 就是从原文件里读往目的文件里写

//首先创建文件

NSFileManager * fm =[NSFileManager defaultManager];

NSError * error = nil;

//获取源文件的属性

NSDictionary *attributes = [fm attributesOfItemAtPath:SRCPATHerror:&error];

//        PERROR(error);

if(error){NSLog(@"%@",error);exit(-1);};

//创建新文件

BOOL ret = [fm createFileAtPath:DSTPATH contents:nil attributes:attributes];

if (!ret) {

perror("createFile");

exit(-1);

}

//打开文件句柄

NSFileHandle * srcFh = [NSFileHandlefileHandleForReadingAtPath:SRCPATH];

NSFileHandle * dstFh = [NSFileHandle fileHandleForWritingAtPath:DSTPATH];

//不要一口气就将源文件读入内存

//首先要获取源文件大小

//        size_t size = [[attributes objectForKey:@"NSFileSize"] integerValue];

unsigned long long size = [attributes fileSize];

//这是一个方法,只有当字典中装文件属性才有效 实际上是一个类别

/*

@interface NSDictionary (NSFileAttributes)

- (unsigned long long)fileSize;

- (NSDate *)fileModificationDate;

- (NSString *)fileType;

- (NSUInteger)filePosixPermissions;

- (NSString *)fileOwnerAccountName;

- (NSString *)fileGroupOwnerAccountName;

- (NSInteger)fileSystemNumber;

- (NSUInteger)fileSystemFileNumber;

- (BOOL)fileExtensionHidden;

- (OSType)fileHFSCreatorCode;

- (OSType)fileHFSTypeCode;

- (BOOL)fileIsImmutable;

- (BOOL)fileIsAppendOnly;

- (NSDate *)fileCreationDate;

- (NSNumber *)fileOwnerAccountID;

- (NSNumber *)fileGroupOwnerAccountID;

@end

*/

while (size) {

NSData * data =  nil;

if (size <= BUFF) {

data = [srcFh readDataToEndOfFile];

size  = 0;

}else{

//先读100个字节

data = [srcFh readDataOfLength:BUFF];

size -= BUFF;

}

[dstFh writeData:data];

}

}

return 0;

}

时间: 2024-10-11 01:21:36

iOS 实现文件的拷贝的相关文章

IOS中大文件拷贝算法

1 + (void)copyFileFromPath:(NSString *)fromPath toPath:(NSString *)toPath 2 { 3 //每次读取数据大小 4 #define READ_SIZE 10 5 // 获取文件管理器 6 NSFileManager *fm = [NSFileManager defaultManager]; 7 8 // 创建目标文件,用于存储从源文件读取的NSData数据 9 10 BOOL isSuccess = [fm createFil

【ThinkingInC++】3、文件的拷贝

/** * 功能:文件的拷贝 * 时间:2014年8月8日07:40:21 * 作者:cutter_point */ #include<iostream> #include<stdlib.h> #include<fstream> #include<string> using namespace std; int main() { ifstream fin("test1.jpg", ios::binary); ofstream fout(&

iOS: Crash文件解析(一)

iOS Crash文件的解析(一) 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断.联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问题,就换一台,如果10台后挂了他就不做手机了.好了不闲扯了,今天就跟大家一起聊聊iOSCrash文件的组成以及常用的分析工具. 有一个WWDC 2010的视频推荐大家抽空看看,视频名称“Understanding C

java 文件及文件夹拷贝

View.java package com.liang; import java.awt.Color; import java.awt.Dimension; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBa

iOS 创建文件夹,删除文件夹,对文件夹重命名的操作

iOS 创建文件夹,删除文件夹,对文件夹重命名的操作 by 伍雪颖 + (void)createFolder:(NSString *)folderName { NSString *imageDir = [NSString stringWithFormat:@"%@/Documents/%@", NSHomeDirectory(),folderName]; NSLog(@"HomeDir: %@",imageDir); BOOL isDir = NO; NSFileM

ios crash文件分析

http://www.cnblogs.com/yingkong1987/p/3157692.html http://blog.sina.com.cn/s/blog_a573f7990101gi4k.html http://stackoverflow.com/questions/3609084/ipad-app-works-on-most-devices-gets-exc-crash-sigabrt-on-some 新建一个专门的目录进行解析处理,如: /crash 把对应的.app和.dSYM文

用C#实现文件夹拷贝

用C#实现文件夹拷贝 C#中没有拷贝整个文件夹的方法,最近需要用到,就写了一个Demo,拿出来跟大家分享一下 主要思想: 1.写一个拷贝文件夹的函数CopyFolder,传入源文件夹路径和目的文件夹路径 2.判断目的文件夹路径是否存在,如果不存在,创建此文件夹 3.获取源文件夹下的所有文件,拷贝这些文件到目的文件夹 4.获取源文件夹下的所有文件夹,循环调用CopyFolder(此处利用了递归) 代码: using System; using System.IO; namespace Folder

IOS之文件的写入和读出

// 获取文件路径 /** 1 * bundle是一个目录,其中包含应用程序的所有资源,通过mainBundle 得到这个目录后就可以获取resource下的资源 */ NSString *filePath = [[NSBundle mainBundle] pathForResource:@"ContactsInfo" ofType:nil]; NSLog(@"%@", filePath); // 将文件中的内容取出来 存储成字符串 有了其中的内容就可以做一些相应的

ios 得到文件夹大小 进率是1000

- (CGFloat)folderSizeAtPath:(NSString *) folderPath { NSFileManager * manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath:folderPath]) { return 0; } NSEnumerator * childFilesEnumerator = [[manager subpathsAtPath:folderPath] objec