objective-c - NSFileManager moveItemAtPath :toPath:error: changes filename

标签 objective-c ios macos nsfilemanager

我有一个 importFile 存储在 NSString* importFile(用 NSLog %@ 打印):

/var/mobile/Applications/5CE1D252-E56A-4AAC-B88E-5B0CEFFF55B3/Library/Caches/tmp/temp_695D39E3-3359-415F-9C0D-243E2E117B8B-456-0000001384C17BBA.tmpfile

然后我收到一个 destinationFile NSString * destinationFile 的值(用 NSLog %@ 打印)

/var/mobile/Applications/5CE1D252-E56A-4AAC-B88E-5B0CEFFF55B3/Documents/Str%208829%20-%20Test.500887280

然后我使用 NSFileManager 移动文件:

NSFileManager* fileManager = [NSFileManager defaultManager];
assert(fileManager != nil);
NSError* error = nil;
[fileManager moveItemAtPath:importFile toPath:destinationFile error:&error];

问题是移动后的实际文件名与请求的目标文件不同:

Str%25208829%2520-%2520Test.500887280

这是怎么回事?那些看起来有区别的额外三个 25 是什么?

最佳答案

看起来文件名中的 % 被编码为 %25(百分比的百分比代码)

你可以看看这个: URL-encoding and HTML-encoding NSStrings

关于objective-c - NSFileManager moveItemAtPath :toPath:error: changes filename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771969/

相关文章:

ios - cancelTrackingWithEvent 被调用甚至触摸委托(delegate)返回 YES

java - 如何在 Java 中为 OS X 运行 sudo 命令

macos - 使用 CGEventTapCreate Swift 中的参数问题

objective-c - 如何为附加到 UIImageView 的 CALayer 设置动画?

ios - 使用 NSURLSession 或其他 iOS 方法传递凭据

ios - 如何在 UIKit 上的 Xcode 11/iOS13 中使用协调器模式?

ios - 我可以将 CoreML 和 PencilKit 等 Apple 库与 React-Native 应用程序一起使用吗?

c++ - 如何在适用于英特尔 Iris Pro 的 Mac OSX 10.9.4 上获取 OpenCL C++ 绑定(bind)

ios - 锁定 Objective-C 中的全类

ios - 图像上的高斯模糊 - iOS 8