java为啥每次都是找不到文件。找不到文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java为啥每次都是找不到文件。找不到文件?相关的知识,希望对你有一定的参考价值。

lx.java这个源代码文件不在D盘根目录下。
需要将lx.java放到D盘根目录下。
或者把lx.java这个源代码文件所在的绝对路径写完整。
javac D:\lx\lx.java
这样写再试一下。
参考技术A 需要指定文件路径

为啥应用程序找不到我恢复的核心数据文件?

【中文标题】为啥应用程序找不到我恢复的核心数据文件?【英文标题】:Why is my restore of the Core Data files not found by app?为什么应用程序找不到我恢复的核心数据文件? 【发布时间】:2015-02-03 18:39:25 【问题描述】:

更新:我正在尝试备份和恢复我的核心数据文件(使用基于issue #444 的日志和 MagicalRecord)。在 iOS 模拟器下运行时,我知道每次从应用程序的最后一次执行开始都会移动文件。 Here 是完整的代码(我把它放在这里是因为它很长,现在它的格式和语法被突出显示,使它更容易阅读)。

我可以在应用程序启动时找到新位置,检索我存储的文件并从 Documents 目录中的文件进行恢复,将它们放置在由 NSLog 语句的控制台输出确定的正确新位置(它不会显示正在恢复的 -shm 文件,但它位于同一位置)。

AppDelegate-sqliteFilePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook

SVC-sqliteFilePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook

documentsBasePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Documents

开始 - storePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook/saori.sqlite

完成! storePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/Application Support/SalonBook/ saori.sqlite-wal

当我开始恢复时,我发出:

[MagicalRecord cleanUp];  //  disable Core Data

完成还原后,我发出以下命令:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"saori.sqlite"];  //  enable Core Data migration
defaultContext = [NSManagedObjectContext MR_defaultContext];   //  set default NSManagedObjectContext for MagicalRecord

当我查看应该在核心数据存储区(使用 SQLite 浏览器)中的记录时,它们在 sqlite 文件 (saori.sqlite) 中,但它们不要出现在应用程序中!就像没有正确设置 MR 堆栈,或者默认上下文以某种方式被删除了。知道如何解决这个问题吗?

【问题讨论】:

当您清理并随后恢复 Core Data 堆栈时,您如何让您的 UI 知道它? 我刚刚进行了另一个测试; sqlite 文件中有数据,它们只是没有正确恢复(我检查了 Finder 中的文件,使用 SQLite 浏览器查看内容,并在运行应用程序时根据控制台日志验证了文件名,它们是相同的!。 )..无论我重启应用多少次,应用中都没有显示数据...很奇怪! 【参考方案1】:

好的,所以在经历了一些刺激和探索之后,我相信+[MagicalRecord cleanUp] 需要一些爱。基本上,持久存储协调器在没有首先删除 SQLite 持久存储的情况下被释放。

正如您在我们的另一次对话中提到的,您需要重置托管对象上下文:

[[NSManagedObjectContext MR_defaultContext] reset];

然后遍历所有持久存储以删除它们:

NSError *error;
NSPersistentStoreCoordinator *persistentStoreCoordinator = [NSPersistentStoreCoordinator MR_defaultStoreCoordinator];
for (NSPersistentStore *store in [persistentStoreCoordinator persistentStores]) 
    BOOL removed = [persistentStoreCoordinator removePersistentStore:store error:&error];

    if (!removed) 
        NSLog(@"Couldn't remove persistent store: %@", error);
    

在那之后,调用[MagicalRecord cleanUp] 应该是安全的,然后像以前一样恢复整个堆栈(尽管您可以选择将更新的持久存储附加到协调器而不是完全清除所有内容)。

【讨论】:

以上是关于java为啥每次都是找不到文件。找不到文件?的主要内容,如果未能解决你的问题,请参考以下文章

java编译 为啥显示找不到文件

bat文件找不到

orcad 16.3版为啥每次开机都显示找不到license 文件,装了好多次了还是这个样子,求解

测试时为啥会找不到测试类 就是运行JUnit 出现找不到测试类的问题

当路径正确时,为啥 NSFIleManager -fileExistsAtPath 找不到现有文件?

为啥应用程序找不到我恢复的核心数据文件?