gpt4 book ai didi

objective-c - 使用 Objective-C/C 从网络驱动器复制目录

转载 作者:行者123 更新时间:2023-11-30 16:05:13 25 4
gpt4 key购买 nike

我正在尝试找出一种方法来实现此目的:

NSString *searchCommand = [[NSString alloc] initWithFormat:@"cp -R /Volumes/Public/DirectoryToCopy* Desktop/"];

const char* system_call = [searchCommand UTF8String];
system(system_call);

system() 方法不承认我传入的特定字符串。如果我尝试类似的操作:

system("kextstat");

没问题。知道为什么我传入的 find string 命令不起作用吗?我在 xCode 中得到的只是“GDB: Running .....”。我应该提到,如果我在终端中尝试相同的命令,它就可以正常工作。

最佳答案

不要使用system() 。相反,使用 -[NSFileManager moveItemAtPath:toPath:error:]像这样:

/* Find the user's Desktop directory. */
NSArray *results = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES/*expandTilde*/);
if (![results count]) return;

NSString *parentDir = [results objectAtIndex:0U];

/* Build the source path in a platform-independent manner. */
/* -pathWithComponents: will use the separator ('/', '\', or ':')
* appropriate for the platform. */
NSArray *srcParts = [NSArray arrayWithObjects:@"/", @"Volumes", @"Public", @"Directory*", (void *)nil];
NSString *src = [NSString pathWithComponents:srcParts];

/* Build the destination path. */
NSString *fnam = [src lastPathComponent];
NSString *dest = [parentDir stringByAppendingPathComponent:fnam];

/* Move |src| to |dest|. */
NSFileManager *fm = [NSFileManager defaultManager];
NSError *error = NULL;
BOOL ok = [fm moveItemAtPath:src toPath:dest error:&error];
if (!ok) {
[[NSApplication sharedApplication] presentError:error];
}

如果您不关心平台无关性,则可以硬编码 srcdest参数,直接执行移动,并将此缩短 75%。

请注意,这不会进行通配——它期望有一个名为“Directory*”的目录,其中星号是目录名称的最后部分。您可以使用 glob() 自己处理通配符,定义于 <glob.h> .

关于objective-c - 使用 Objective-C/C 从网络驱动器复制目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com