如何判断文件是否已通过NSFileManager ios上载
我正在将文件上载到Dropbox,我想知道是否可以通过NSFileManager标记任何内容来测试文件是否已经上载。我一直在浏览文档,还没有找到任何有用的东西 例如,如果我上传了一个名为song.m4a的文件,并且用户在应用程序中更改了该文件的名称,那么我如何才能确定该文件是否已以新名称上传,从而不再上传该文件 是否有任何属性或属性可以设置为查看文件是否已上载如何判断文件是否已通过NSFileManager ios上载,ios,objective-c,nsfilemanager,Ios,Objective C,Nsfilemanager,我正在将文件上载到Dropbox,我想知道是否可以通过NSFileManager标记任何内容来测试文件是否已经上载。我一直在浏览文档,还没有找到任何有用的东西 例如,如果我上传了一个名为song.m4a的文件,并且用户在应用程序中更改了该文件的名称,那么我如何才能确定该文件是否已以新名称上传,从而不再上传该文件 是否有任何属性或属性可以设置为查看文件是否已上载 谢谢。您可以使用散列,例如,您可以计算文件的MD5散列并将其存储在手机上的本地文件中,当用户尝试上载文件时,您不检查其名称,只需重新计算
谢谢。您可以使用散列,例如,您可以计算文件的MD5散列并将其存储在手机上的本地文件中,当用户尝试上载文件时,您不检查其名称,只需重新计算MD5散列并检查其是否存在于您的本地文件中,如果存在,则之前已上载一次 编辑: 您可以将任何内容转换为NSData,然后计算该NSData的哈希值,例如,在您的情况下,您可以这样加载文件
NSData* data = [NSData dataWithContentsOfFile:yourFilePath];
- (NSString*)MD5:(NSData*)input
{
// Create byte array of unsigned chars
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
// Create 16 byte MD5 hash value, store in buffer
CC_MD5(input.bytes, input.length, md5Buffer);
// Convert unsigned char buffer to NSString of hex values
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
然后你可以像这样把它散列
NSData* data = [NSData dataWithContentsOfFile:yourFilePath];
- (NSString*)MD5:(NSData*)input
{
// Create byte array of unsigned chars
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
// Create 16 byte MD5 hash value, store in buffer
CC_MD5(input.bytes, input.length, md5Buffer);
// Convert unsigned char buffer to NSString of hex values
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
别忘了导入
#import <CommonCrypto/CommonDigest.h>
我看了一些散列的例子,我想知道,我是否需要使用NSString来计算散列?还是NSData?还是会有所不同?我不熟悉散列,我想知道用户通过重命名文件来更改NSString是否会更改散列计算。请原谅我的无知。您可以从NSString或NSData计算哈希,所有数据都可以转换为NSData,因为所有数据都是字节,我将编辑我的答案,请检查