Objective c “获取文件路径文件打开”对话框?
我的应用程序中有一个文件打开对话框,可以从中选择文件,但是当用户单击对话框中的“选择”按钮时,它显然不会做任何事情。如何从所选文件中提取文件路径?我需要文件路径,以便可以获取要加密的文件内容。最初,我将使用的文件硬编码到我的应用程序中,但那只是出于测试目的。以下是我用于“文件打开”对话框的内容:Objective c “获取文件路径文件打开”对话框?,objective-c,cocoa,nsopenpanel,Objective C,Cocoa,Nsopenpanel,我的应用程序中有一个文件打开对话框,可以从中选择文件,但是当用户单击对话框中的“选择”按钮时,它显然不会做任何事情。如何从所选文件中提取文件路径?我需要文件路径,以便可以获取要加密的文件内容。最初,我将使用的文件硬编码到我的应用程序中,但那只是出于测试目的。以下是我用于“文件打开”对话框的内容: int i; NSOpenPanel* openDlg = [NSOpenPanel openPanel]; [openDlg setCanChooseFiles:YES]; [openDlg setC
int i;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:YES];
[openDlg setPrompt:@"Select"];
NSString *fileName = [pathAsNSString lastPathComponent];
[fileName stringByDeletingPathExtension];
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton )
{
NSArray* files = [openDlg filenames];
for( i = 0; i < [files count]; i++ )
{
[files objectAtIndex:i];
}
}
inti;
NSOpenPanel*openDlg=[NSOpenPanel-openPanel];
[openDlg setCanChooseFiles:是];
[openDlg SetCanChoosedDirectories:是];
[openDlg setPrompt:@“选择”];
NSString*文件名=[pathAsNSString lastPathComponent];
[文件名stringByDeletingPathExtension];
if([openDlg runModalForDirectory:nil file:nil]==NSOKButton)
{
NSArray*文件=[openDlg文件名];
对于(i=0;i<[文件计数];i++)
{
[文件对象索引:i];
}
}
非常感谢您的帮助。使用
-(NSArray*)URL
方法,而不是文件名
您的代码已经在处理用户选择的文件,您只是没有对它们做任何操作
从-filenames
方法返回的数组包含用户选择为NSString
对象的文件路径。如果他们只选择了一个文件,则阵列中只有一个对象。如果他们没有选择任何文件,数组将为空
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton )
{
NSArray* files = [openDlg filenames];
for(NSString* filePath in [openDlg filenames])
{
NSLog(@"%@",filePath);
//do something with the file at filePath
}
}
如果您只希望用户能够选择单个文件,则在配置面板时调用[openPanel setAllowsMultipleSelection:NO]
。这样,文件名
数组中最多有一个条目
正如@VenoMKO指出的那样,
-filenames
方法现在已被弃用,您应该改用-url
方法。这将返回文件NSURL
对象数组,而不是NSString
s数组。由于Snow Leopard中几乎所有的文件处理API都修改为采用URL,因此这将是首选选项。您希望使用以下代码获取文件路径
NSOpenPanel* openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:YES];
[openPanel setCanChooseDirectories:NO];
[openPanel setAllowsMultipleSelection: NO];
[openPanel setAllowedFileTypes:ArrExtension ];
if ([openPanel runModal] == NSOKButton ){
NSString *FilePath = [NSString stringWithFormat:@"%@",[openPanel URL]];
[openPanel canHide];
}
当我使用-(NSArray)URL方法时,警告被删除,但我无法查看文件以获取文件内容。场景:-案例1,当am使用时,NSArray文件=[openDlg文件名];我得到了这个输出:filePath=/Users/sumitgosh/Desktop/FD_TextFilesToUpload/SmallDummy Data/FirstName.txt,它在读取文件内容时非常有效-案例2:当我使用时,NSArray*文件=[openDlg URL];输出:filePath=fileName=/Users/sumitgosh/Desktop/FD_TextFilesToUpload/SmallDummy Data/FirstName.txt,在读取文件内容时不起作用@在OS X v10.6中,不推荐使用Dalfordirectory:file:types:。您可以改用runModal。您可以使用setDirectoryURL:设置路径,也可以使用setAllowedFileTypes:设置文件类型。