1

アプリでファイルを作成し、それを .zip ファイルに圧縮してから、メールに添付します。ただし、.zip ファイルには、実際のファイルの前に多くのディレクトリが含まれています。名前のないフォルダーであり、それを受け取った人には見えないように見える「/」から始まります。最上位ディレクトリは「/」で、次のレベルは「com」です...
/var/mobile/Applications/CDA16BB231BDABABBA/Documents/data.txt

すべてのディレクトリを削除して、.zip ファイルにファイルのみを含めるにはどうすればよいですか?

これが私が使用したコードです...

    NSError *error;
    NSString *documentsDirectory = [NSHomeDirectory()
                                    stringByAppendingPathComponent:@"Documents"];
    NSString *filePath = [documentsDirectory
                          stringByAppendingPathComponent:@"data.txt"];
    NSLog(@"string to write:%@",printString);
    [printString writeToFile:filePath atomically:YES
                    encoding:NSUTF8StringEncoding error:&error];

    ////ZIP FILE/////

    NSString *zipfilePath = [documentsDirectory stringByAppendingPathComponent:@"data.zip"];
    [[NSFileManager defaultManager] removeItemAtPath: zipfilePath error: &error];

    ZipFile *zipFile = [[ZipFile alloc]initWithFileName:zipfilePath mode:ZipFileModeCreate];

    NSDictionary *attributes = [[NSFileManager defaultManager]attributesOfItemAtPath:zipfilePath error:&error];
    NSDate *Date = [attributes objectForKey:NSFileCreationDate];

    ZipWriteStream *stream = [zipFile writeFileInZipWithName:filePath fileDate:Date compressionLevel:ZipCompressionLevelBest];
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    [stream writeData:data];
    [stream finishedWriting];


    [zipFile close];
4

1 に答える 1

0

問題は、あなたが言っていることです:

writeFileInZipWithName:filePath

変数filePathには、あなたが不満を言っている巨大な長い名前が含まれています。これは、上から実際のファイルまでのパス全体です。

あなたのファイルの名前は です@"data.txt"。したがって、言いたいことは次のとおりです。

writeFileInZipWithName:@"data.txt"
于 2013-04-10T15:31:30.383 に答える