0

我试图通过几种方法读取主应用程序,但我什么也没回来使用 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) ;
}

但是我什么也没得到,所以我的问题是是否可以访问可执行文件进行读写,如果可以,我们怎么能做到这一点?谢谢

4

3 回答 3

2

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

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

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

于 2010-07-01T13:03:59.410 回答
2

在以前版本的 iPhone OS 中,可以在应用程序包中写入/更改文件,但之后您的应用程序将无法启动(因为您的包签名不再正确)。在当前版本中,根本不可能在应用程序包中写入/更改文件。

于 2010-07-01T12:52:39.643 回答
0

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

我最初有代码试图确定可执行文件是否已被修改(以检测盗版)。虽然代码最初被接受,但在 iPad 首次发布时,我收到了拒绝。我已经删除了代码,因为它对盗版水平并没有真正的影响。

于 2010-07-01T15:24:32.427 回答