iPhone:将App Executable作为文件读取

时间:2010-07-01 12:49:48

标签: iphone objective-c nsbundle

我试图通过几种方法阅读主应用程序,但我什么都没有回来 使用NSFileHandle,它不会返回以下代码:

NSFilemanager *filemanager = [ filemanager defaultmanager ] ;
NSString *myfile = [ [ NSBundle mainBundle ] bundlePath ] ;
if ( [ filemanager isReadableFileAtPath:myfile ] ) 
    NSLog(@" myfile is readable ") ;
if ( [ filemanager isWritableFileAtPath:myfile ]) 
    NSLog(@"myfile is wrieable ") ;
NSFileHandle *filehandle= [ NSFileHandle fileHandleForReadingAtPath:myfile ] ;
if (myfile == nil) {
    [ filehandle closeFile ] ;
}else {
    NSData *filedata = [ filehandle readDataToEndOfFile ] ;
    NSString *filestrdata = [ [ NSString alloc ] initWithData:filedata encoding:NSUTF8StringEncoding ] ;    
    NSLog(@"string data \n %@ " , filedata) ;
}

但是我没有得到任何回报所以我的问题是是否可以访问可执行文件进行读写,如果是,我们怎么能这样做呢? 谢谢

3 个答案:

答案 0 :(得分:2)

在以前版本的iPhone OS中,可以在应用程序包中编写/更改文件,但之后您的应用程序无法访问(因为您的捆绑签名不再合适)。在当前版本中,根本无法在应用程序包中编写/更改文件。

答案 1 :(得分:2)

“捆绑路径”指向MyApp.app,它是目录(包含Info.plist,可执行文件和应用程序的资源)。如果您想要应用程序的二进制文件,请使用可执行文件路径:

NSString * path = [[NSBundle mainBundle] executablePath];
NSData * filedata = [NSData dataWithContentsOfFile:path];

您将无法将其作为UTF-8字符串读取,因为它不是有效的UTF-8数据。

答案 2 :(得分:0)

我可以确认尝试阅读可执行文件过去曾对我造成过拒绝。

我最初有代码试图确定可执行文件是否已被修改(以检测盗版)。虽然代码最初被接受,但在iPad首次发布时,我却拒绝这样做。我已经删除了代码,因为它对盗版级别没有任何影响。