Heim  >  Fragen und Antworten  >  Hauptteil

ios – Um festzustellen, ob eine Datei in einem Ordner vorhanden ist, verwenden Sie fileExistsAtPath: immer NEIN, die Datei existiert

1. Ressourcenfreigabe zwischen Anwendungen, die freigegebenen Dokumente werden im Pfad „Dokumente/Posteingang“ der Sandbox gespeichert:
(lldb) po localPath
/var/mobile/Containers/Data/Application/151DF2B1-576C-42B5-8F5D-051132FF2494/Documents / Inbox/%3F%3F%20Microsoft%20Word%20%3F%3F%20(2)-1.docx

Diese Datei existiert, aber ich möchte die Dokumentgröße mit der folgenden Methode berechnen

NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:localPath]) {
        size = [[fileManager attributesOfItemAtPath:localPath error:nil] fileSize];
    }

Gibt immer NEIN zurück, die Datei existiert nicht. Ich würde gerne fragen, ob es ein Problem mit diesem Pfad gibt. Kann ich das nicht so beurteilen?
Wenn der Pfad in /var/mobile/Containers/Data/Application/151DF2B1-576C-42B5-8F5D-051132FF2494/Documents/Inbox geändert wird, wird die Datei erkannt

Warten online~~~
Vielleicht ist die Beschreibung des Problems nicht ganz klar. Wenn Sie Zeit haben, können Sie Folgendes lesen: http://blog.csdn.net/zhonggaorong/article/details/51832089 Lassen Sie die Drittanbieter-App auf „Verwenden“ und „Andere Anwendungen öffnen“ klicken. Die unten angezeigte Konsole kann Ihre eigene App haben. Anschließend springt sie zu Ihrer eigenen App und ruft openUrl: diese Methode zurück

曾经蜡笔没有小新曾经蜡笔没有小新2706 Tage vor1531

Antworte allen(3)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-24 11:33:54

    Application/ 后面那一串,应用每次运行都会变的,你不应该把这个路径分享出去,而且一个应用也不能访问到另一个应用的文件目录。

    根据iOS App让自己的应用在其他应用中打开列表中显示、iOS把自己的应用添加到”活动“、将PDF文件Open In MyApp

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        if (url != nil) {
            NSFileManager *fileManager = [NSFileManager defaultManager];
            if ([fileManager fileExistsAtPath:url.path]) {
                unsigned long long size = [[fileManager attributesOfItemAtPath:url.path error:nil] fileSize];
                NSLog(@"size:%llu", size);
            }
            NSData *data = [NSData dataWithContentsOfURL:url];
            UIImage *image = [UIImage imageWithData:data];
            NSLog(@"%@", image);
        }
        
        return YES;
    }

    Antwort
    0
  • 某草草

    某草草2017-05-24 11:33:54

    1. 路径中的字符串是每次安装应用时,系统分配的,只要不被卸载,这个路径是不变的
      2.我怀疑是路径名含非法字符导致的问题

    3.DOCUMENT目录不是sandbox,就是为分享和云备份,还有iTunes客户端用的

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-24 11:33:54

    iOS的app都是沙盒,只能访问自己app下的目录。你的app这一串151DF2B1-576C-42B5-8F5D-051132FF2494是会发生变化的。所以要通过相对路径获取。参考代码如下:

    NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // 这个documentDirectory就是你的/var/mobile/Containers/Data/Application/151DF2B1-576C-42B5-8F5D-051132FF2494/Documents/目录了
    NSString *documentDirectory = [pathArray firstObject];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *localPath = [documentDirectory stringByAppendingPathComponent:@"/Inbox/%3F%3F%20Microsoft%20Word%20%3F%3F%20(2)-1.docx"];
    if ([fileManager fileExistsAtPath:localPath]) {
        size = [[fileManager attributesOfItemAtPath:localPath error:nil] fileSize];
    }

    Antwort
    0
  • StornierenAntwort