+ (void)copyFileFromPath:(NSString *)fromPath toPath:(NSString *)toPath
{
//每次读取数据大小
#define READ_SIZE 1000
// 获取文件管理器
NSFileManager *fm = [NSFileManager defaultManager]; // 创建目标文件,用于存储从源文件读取的NSData数据 BOOL isSuccess = [fm createFileAtPath:toPath contents:nil attributes:nil]; if (!isSuccess) {
NSLog(@"创建目标文件失败!");
return;
}
// 获取源文件大小
NSDictionary *dic = [fm attributesOfItemAtPath:fromPath error:nil];
NSNumber *file_size = [dic objectForKey:@"NSFileSize"];
NSNumber *hadReadSize = @;
double leftSize = [file_size doubleValue] - [hadReadSize doubleValue];
// 创建源文件和目标文件的句柄
NSFileHandle *sh = [NSFileHandle fileHandleForReadingAtPath:fromPath];
NSFileHandle *dh = [NSFileHandle fileHandleForWritingAtPath:toPath];
NSData *tempData = nil;
while (leftSize > ) {

      @autoreleasepool {

           if (leftSize < READ_SIZE) {
   tempData = [sh readDataToEndOfFile];
   [dh writeData:tempData];
  break;
  }
  else
  {
   tempData = [sh readDataOfLength:READ_SIZE];
  [dh writeData:tempData];
  leftSize -= READ_SIZE;
  }
}
} }

IOS中大文件拷贝算法的更多相关文章

  1. iOS关于沙盒文件拷贝manager.copyItem的一个坑

    记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...

  2. iOS下使用SHA1WithRSA算法加签源码

    首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...

  3. 文件操作ofstream,open,close,ifstream,fin,依照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件

     1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; ...

  4. iOS开发-文件操作

    目录操作和文件管理 学习目标 1.理解单例 2.掌握NSFileManager类常用的文件管理操 3.掌握NSFileHandle类常用的文件数据操作 4.了解NSData类的常用操作 5.掌握Pli ...

  5. 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密

    在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...

  6. 利用fstream进行文件拷贝测试

    今天翻到一个早期写测试代码的目录,找到几个以前的测试代码,于是拿出来贴到博客中.(只是简单的测试,并不严谨.注意这里windows和linux的硬件环境不一样) 这一个是使用fstream进行文件拷贝 ...

  7. [转][iOS Crash文件分析]-如何使用symbolicatecrash工具

    上传一软件,被拒了,自己测试了n遍都未出现这个情况,今天用symbolicatecrash工具分析了一下苹果提供的Crash文件,最终查到是 - (void)mapView:(MKMapView *) ...

  8. c++ 通过数据流方式实现文件拷贝

    #include "stdafx.h"#include <iostream>#include<fstream>using namespace std;voi ...

  9. node实现文件拷贝2

    https://www.cnblogs.com/coding4/p/7495968.html 文件拷贝NodeJS 提供了基本的文件操作 API,但是像文件拷贝这种高级功能就没有提供,因此我们先拿文件 ...

随机推荐

  1. OpenCV学习笔记廿一:opencv_contrib模块

    一,简介: 该库为新加入代码库的算法.

  2. webpack添加node_path不是('webpack' 不是内部或外部命令,也不是可运行的程序或批处理文件?)

    安装webpack 先决条件 开始之前,请确保安装了新的Node.js版本.目前的LTS是理想的起点.您可能会遇到与旧版本的各种问题,因为它们可能缺少webpack或相关软件包可能需要的功能. 请注意 ...

  3. Yii2 Queue队列

    github地址:https://github.com/yiisoft/yii2-queue 问题:https://github.com/yiisoft/yii2-queue/issues Jobs ...

  4. 跟上Java8 - 日期和时间实用技巧,转自知乎王爵nice

    作者:王爵nice链接:https://zhuanlan.zhihu.com/p/28133858来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 当你开始使用Java操 ...

  5. SQL.Cookbook 读书笔记4 插入更新和删除

    第四章 插入更新和删除 4.1 插入数据 ,'PROGRA','NEW YOURK'); 4.2 从一个表向另一个表中复制 insert into dept_east(deptno,dname,loc ...

  6. [Spring Data MongoDB]学习笔记--建立数据库的连接

    1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoD ...

  7. 【BZOJ3502/2288】PA2012 Tanie linie/【POJ Challenge】生日礼物 堆+链表(模拟费用流)

    [BZOJ3502]PA2012 Tanie linie Description n个数字,求不相交的总和最大的最多k个连续子序列. 1<= k<= N<= 1000000. Sam ...

  8. x+=y与x=x+y有什么区别?

    一般情况下,x+=y与x=x+y输出结果是等价的,因此两种写法是可以通用的,但是在某些临界值选用x+=y更加合适,比如: short n=3; n+=1;//编译通过 n=n+1;//编译失败 上述例 ...

  9. mysql_表_操作

    1.创建表 # 基本语法: create table 表名( 列名 类型 是否可以为空 默认值 自增 主键, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=u ...

  10. MySQL中锁的类型

    InnoDB存储引擎实现了一下两种标准的行级锁: 共享锁S LOCK 允许事务读一行数据 排他锁 X LOCK 允许事务删除或更新一行数据 如果是一个事务T1斤获得了行r的共享锁,那么另外一个事务T2 ...