程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> objective c-在iphone中打開文件系統報出不可讀

objective c-在iphone中打開文件系統報出不可讀

編輯:編程綜合問答
在iphone中打開文件系統報出不可讀

在iphone應用中打開文件,NSFileManager isReadableFileAtPath 返回 NO
代碼:

-(BOOL)application:(UIApplication *)application
           openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
        annotation:(id)annotation {

    if (url != nil && [url isFileURL]) {
        NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        if ( [[NSFileManager defaultManager] isReadableFileAtPath:[url absoluteString]] ) {
            NSLog(@"READABLE!");
            [[NSFileManager defaultManager] copyItemAtPath:[url absoluteString] toPath:[documentsPath stringByAppendingString:@"/timecode.xml"] error:nil];
        } else {
            NSLog(@"NOT READABLE!");
        }

        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:[documentsPath stringByAppendingString:@"/timecode.xml"]];

        if (fileExists) {
            NSLog(@"THERE!");
        } else {
            NSLog(@"NOT THERE!");
        }
    }
}

不知為啥如果我從郵箱應用(還有一些其他應用)打開文件到我自己的文件,系統就會提示不可讀。

最佳回答:


這是由於URL不是一個路徑

[url absoluteString]

比如:

file:///var/mobile/XXXXXXXX/MyApp.app/Documents/foo.txt

你需要使用:

[url path]

還有,兩個注釋:

url != nil && [url isFileURL]

非常多余

[url isFileURL]

如果URL是nil,就會返回NO

[documentsPath stringByAppendingString:@"/timecode.xml"]

不要重新發明,試試拆分路徑分隔符,這行應該是這樣的:

[documentsPath stringByAppendingPathComponent:@"timecode.xml"]
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved