指定字节拷贝文件

#import "SizeCopy.h"

@implementation SizeCopy

-(void)accordingByteCopy:(NSInteger)size
{
    //获取桌面上的文件路径,以便拷贝
    NSString *[email protected]"/Users/scjy/Desktop/video.mp4";
    //指定将要拷贝到哪里
    NSString *[email protected]"/Users/scjy/Desktop/movie.mp4";
    //创建文件管理者,准备创建文件
    NSFileManager *fileManager=[NSFileManager defaultManager];
    //判断将要创建的文件是不是已经存在
    BOOL isHave=[fileManager fileExistsAtPath:newPath];
    if (!isHave) {
        //不存在的话,开始执行创建,并判断是不是创建成功
        BOOL isSec=[fileManager createFileAtPath:newPath contents:nil attributes:nil];
        if (isSec) {
            NSLog(@"文件创建成功,开始复制");
        }
        else
        {
            return;
        }
    }
   
    NSFileHandle *oldHandle=[NSFileHandle fileHandleForReadingAtPath:oldPath];//读取文件的handle
    NSFileHandle *newHandle=[NSFileHandle fileHandleForUpdatingAtPath:newPath];//写入文件的handle
   
    //表示文件已经读取过,指针已经移动到数据的最后一位
    //NSLog(@"%ld",[oldHandle availableData].length);--有准确值
    //NSLog(@"%ld",[oldHandle availableData].length);--值为0
   
    //attributesOfItemAtPath获取文件的大小,内容等方法
    NSDictionary *dictionary=[fileManager attributesOfItemAtPath:oldPath error:nil];
    //返回文件的有效内容大小
    NSNumber *lenNum=[dictionary valueForKey:NSFileSize];
    NSInteger fileLength=[lenNum integerValue];//转成基本数据类型
   
    NSInteger readLength=0;
    BOOL isEnd=NO;
   
    while (!isEnd) {
        NSData *data=nil;
       
        //获取剩余未拷贝文件长度
        NSInteger subLegth=fileLength-readLength;
       
        //判断是不是最后一次节点复制文件
        if (subLegth<size) {
            isEnd=YES;
            [oldHandle readDataToEndOfFile];//读取到文件末尾
            NSLog(@"拷贝完成:100%@",@"%");
        }
        else
        {
            data=[oldHandle readDataOfLength:size];//读取若干字节
            readLength+=size;
           
            //跳转到拷贝结束的文件节点
            [oldHandle seekToFileOffset:readLength];
           
            //计算拷贝比例
            NSNumber *readNum=[NSNumber numberWithInteger:readLength];
            NSLog(@"正在拷贝:%.3f%@",[readNum doubleValue]/[lenNum doubleValue]*100,@"%");
        }
       
        [newHandle writeData:data];//写入文件
       
       
    }
   
    [oldHandle closeFile];//关闭文件
    [newHandle closeFile];
}

@end

时间: 2024-12-16 07:09:06

指定字节拷贝文件的相关文章

linux下自动ftp到服务器对比拷贝指定目录下文件

#!/bin/bash process=8 PWD=`pwd` DAT=`date` ftpip="192.168.1.1" user="ftp_username" password="ftp_password" local_dir="/home/" getlist() { ftp -n $ftpip <<EOF |awk '{print $9}'|sed '/^$/d' >$PWD/list user $u

Linux技巧——用dd生成指定大小的文件

我们在测试或调试的时候,有时候会需要生成某个size的文件,比如在测试存储系统时,需要将磁盘剩余空间减少5G,最简单的办法就是拷贝一个5G的文件过来,但是从哪儿去弄这样大小的文件呢,或许你想到随便找一个文件,不停的拷贝,最后合并,这也不失为一种办法,但是有了dd,你会更容易且更灵活的实现 我们来case by case的介绍dd的用法.先看第一个 生成一个大小为5G的文件,内容不做要求 命令如下 $ dd if=/dev/zero of=tmp.5G bs=1G count=5 解释一下这里用到

dd - 转换和拷贝文件

摘要 dd [--help] [--version] [if=file] [of=file] [ibs=bytes] [obs=bytes] [bs=bytes] [cbs=bytes] [skip=blocks] [seek=blocks] [count=blocks] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}] 描述 当进行非强制的转换的时候,使用指定的输入和输

使用rcp命令实现从远程机器拷贝文件

rcp:远程文件复制 使用rcp命令可以在远程主机之间复制文件,如果同时指定2个以上的文件或目录,且最后的目的地是一个已经存在的目录,则他会把前面指定的所有文件或目录复制到该目录中. rcp命令语法: rcp [选项][文件1][文件2] rcp [选项] [文件] [目录] rcp [选项] rcp命令选项含义 选项 含义 -p 尝试保留副本的修改时间和原文件的模式 -x 在主机之间传输加密所有信息 -r 如果原文件是目录,,复制该目录中每个字树 -D<端口> 指定连接到远程主机上的端口 -

Mac如何拷贝文件到其它位置?Mac拷贝文件到其它位置方法

使用Mac的用户知道Mac如何拷贝文件到其它位置吗?今天我要跟大家分享的就是Mac如何拷贝文件到其它位置?有兴趣的可以学习下. Mac拷贝文件到其它位置方法: 1.点击 Launchpad - 其他 – Automator,然后在右上角的状态栏中点击文件 - 新建,然后选择"工作流程". 2.点击窗口左侧的操作 - 资源库 - 文件和文件夹,并且将"获得指定的 Finder 项目"拖入右边的空白位置. 3.在"操作 - 资源库 - 文件和文件夹"

两个linux之间拷贝文件及文件夹

Linux为我们提供了两个用于文件copy的命令.一个是cp,一个是scp,可是他们略有不同,cp 主要是用于在同一台电脑上,在不同的文件夹之间来回copy文件 scp 主要是在不同的Linux系统之间来回copy文件.scp即security cp,带有安全性的复制. 在两台linux机之间拷贝文件,我们打开当中随意一台就可以,利用scp可实现两者之间文件文件夹的传输: 从本地server拷贝到远程server: (1) 拷贝文件: 命令格式: scp local_file [email pr

Struts2中指定的校验文件不起作用的原因

转载请注意出处:http://blog.csdn.net/bettarwang/article/details/39801733 我们知道,假设要为某个Action指定校验文件.那么就要将"Action名-validation.xml"的校验文件放在与该Action在同一路径下,而且在struts.xml中指定<result name="input>的值,在input对应的文件里增加<s:fielderror/>就可以. 此时假设输入不符合校验规则,就

linux-14基础命令之-复制(cp)移动(mv),删除(rm),拷贝文件(dd)

1.cp 命令用于复制文件或者目录 格式为:cp[选项]源文件  目标文件 复制名录有三种情况: @1.目标文件是一个目录,将源复制到该目录下:  @2.目标文件是一个文件,将源文件覆盖该文件: @3. 文件文件不存在,将复制源文件并修改为目标文件的名称: cp 命令参数 参数 作用 -p 保留原始文件的属性 -d 若对象为“连接文件”则保留该“连接文件"属性 -r 递归持续复制 -i  如目标文件存在,则询问是否覆盖 -a 相当于-pdr(p,d,r 为上述的参数) 如:创建一个名为insta

Centos6.5系统安装kvm虚拟机之克隆、拷贝文件安装新虚拟机

Centos 6.5 x86_64系统安装kvm虚拟机-克隆.拷贝xml文件安装新虚拟机 一.通过模板虚拟机克隆新虚拟机 IP规划: 宿主机:10.0.1.149 模板虚拟机:10.0.1.228 克隆虚拟机:10.0.1.100 关闭或者暂停模板虚拟机,再进行克隆安装新虚拟机. [[email protected] ~]# virt-clone -o kvm_mode_5566 -n mysql-server -f /data/kvmdisk/mysql-server.qcow2 ERROR