java - 手动保存时用java读取文件

标签 java file-io

我有一个关于 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/

相关文章:

java - 在 Java 中写入 SocketChannel 意外重复

java - Spring mvc-从 PostMapping URL 返回 JSON(Froala 编辑器)

c - 使用 fread 在 C 中读取 ASCII 文件

java - 使用 java,如何获取 solaris zfs 文件系统上的可用空间量?

Java:存储分组对象(可按其类别访问)的正确方法是什么?

java - Instant vs LocalDateTime - 何时更喜欢其中一个

java - 使用 java 应用程序打开文件

.net - 将文本文件写入 C 时出现 UnauthorizedAccessException :\on Windows 7

c# - 检查共享网络驱动器上的文件是否可访问

c++ - 将数据从 C++ Vector 快速写入文本文件