我在java(J2EE App.)中面临一个非常奇怪的问题。我有一个应用程序,它从放置在本地计算机/服务器上某个位置的客户配置文件中读取数据,通过 Java API 读取数据并将其显示在工具的 UI 上。之后,通过 UI,可以更改数据并通过 Java API 通过工具将其写回文件。
问题在于该工具无法读取信息(读取了文件的一半)并导致 UI 上的数据丢失。但问题并不一致。这种情况大约只发生二十分之一。休息一下,它读起来总是很好。
我无法在我的 WINDOwS 计算机上重现该问题。但在生产服务器(UNIX 环境)中可以看到。
请建议我需要检查什么。 UNIX 中是否存在任何与权限相关的问题。
我的工具可能有错误吗?或者是该工具遇到的环境问题。
我应该尝试
try {
// my code
} catch(Throwable t) {
t.printStackTrace();
}
要调试环境中是否存在问题?
最佳答案
Windows 倾向于锁定文件,因此您在写入文件时不太可能读取它。 Linux 认为您知道自己在做什么,并且默认情况下不锁定。这意味着您可以在完成之前查看文件。这是文件的常见问题,因为它们不是设计为消息传递协议(protocol)的,因此您必须想出一些启发式方法来解决此缺陷。更好的方法是不要使用文件在进程之间进行通信,否则您必须非常了解它的局限性。
关于Windows/Unix 服务器上的 JAVa IO 限制导致应用程序出现未知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033202/