我正在尝试订阅移动到垃圾MacOS事件和复制文件夹回来。代码适用于默认的英文字母,但当我使用乌尔都语和乌尔都语数字格式时,copyItemAtPath在复制时找不到文件夹。
回调:
void fsevents_callback(ConstFSEventStreamRef streamRef,
void * userData,
size_t numEvents,
void * eventPaths,
const FSEventStreamEventFlags eventFlags[],
const FSEventStreamEventId eventIds[]) {
FSEventsListener * eventListener = (__bridge FSEventsListener * ) userData;
char ** paths = eventPaths;
for (int i = 0; i < numEvents; i++) {
NSString * name = [NSString stringWithFormat: @ "%s", paths[i]];
NSLog(@ "Path: %@ (flag = %d)", name, eventFlags[i]);
if (eventFlags[i] & kFSEventStreamEventFlagItemRenamed) {
[eventListener.delegate fileWasRenamed: name];
} else {
[eventListener.delegate fileWasTouched: name];
}
}
}听众:
- (void)fileWasRenamed:(NSString *)aPath
{
NSString *trashPath = [NSSearchPathForDirectoriesInDomains(NSTrashDirectory, NSUserDomainMask, YES) lastObject];
if (nil != aPath && NSNotFound != [aPath rangeOfString:trashPath].location)
{
NSString *trashFilePath = aPath;
if (nil != self.removedFilePath && NSNotFound != [trashFilePath.lastPathComponent rangeOfString:self.removedFilePath.lastPathComponent.stringByDeletingPathExtension].location)
{
NSError *error = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isCopied = [fileManager copyItemAtPath:trashFilePath toPath:self.removedFilePath error:&error];
}
}
}当我试图复制时,我得到了错误:
错误Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”
垃圾中的文件名:我的文件夹۱۷.۵۷.۴۴
发布于 2018-04-25 20:48:51
[NSString stringWithFormat: @ "%s", paths[i]];显然不是处理unicode字符串的有效方法。使用
[NSString stringWithUTF8String:paths[i]];相反应该会有帮助。
https://stackoverflow.com/questions/50025513
复制相似问题