所以我的场景如下:
我有一个目录,每隔 X 秒就有一个 Java 应用程序轮询该目录以查看是否添加了任何新文件。如果检测到新文件(可能通过未知的 FTP 实现传输到那里),我想查看该文件以查看它是否以特定字符串(即“allData”)结尾。如果该字符串存在,我将根据需要开始解析它,因为文件被认为已成功传输。
所以问题是正在传输的文件可能非常大(几个 GB),并且我不希望在整个文件完全传输之前开始解析(由结尾的“allData”字符串表示) 。当我想查看该字符串的文件时,搜索必须快速且内存消耗低。由于这个原因,我使用了 RandomAccessFile 对象(只读模式),该对象将文件描述符设置为非常接近文件末尾,然后我开始使用该 FD 和 BufferedReader 进行搜索。
我的问题是我在Java应用程序中打开的文件是否会影响正在执行的文件传输。因为可能会出现这样的情况:应用程序在文件传输之前就开始读取(以判断整个文件是否已传输)。在这样的实现中会发生什么令人讨厌的事情吗?
最佳答案
我只是让远程端使用 ftp 传输文件,然后让远程端将文件从 "filename.file.incomplete"重命名为 "filename.file",然后您可以轮询没有 "不完整”最后。
关于java - Java中同时读取和写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10939122/