我有一个关于 java 和文件输入/输出的问题。 对于特定任务,我必须在打开文件时传输文件(准确地说是 Excel)。 想象一下以下场景:
Excel 文件由一名用户打开并使用。有时,文件由用户手动保存。现在我想编写一个java程序,它读取文件并每30秒通过套接字传输一次。到目前为止没有问题。我的问题:如果用户在我的程序想要读取文件的那一刻保存文档,会发生什么。这会造成任何麻烦吗?
不知道这是否重要,但我使用 BufferedInputStream 来读取文件。
最佳答案
My question: what happens if the user saves the document in the exact moment my program wants to read the file. Could this cause any troubles?
是的。
根据您的平台以及 Excel 文件的保存方式,可能会发生以下一种或多种情况。
如果 Excel 使用锁定,则 Excel 或尝试读取文件的程序可能会收到错误消息,指出文件正在使用中。
如果 Excel 就地进行重写并且不锁定文件,则尝试读取文件的程序可能会看到被截断的 Excel 文件。
如果 Excel 写入一个新文件并重命名它,尝试读取该文件的程序可能会看到一个状态 该文件显然不存在。
它可以工作。
简而言之,进行读取的程序需要非常具有防御性......
Don't know if it matters, but im using an BufferedInputStream to read the file.
我认为这无关紧要。
关于java - 手动保存时用java读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325939/