java - Java中同时读取和写入文件

标签 java file-io

所以我的场景如下:

我有一个目录,每隔 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/

相关文章:

java - 在Java中将变量返回到第二帧

java - 使用 Google App Engine 时如何关闭 DataNucleus Enhancer

java - 以字符串形式从文本文件返回值

matlab - 在matlab中逐行读取文本文件并计数

c++ - 在 C++ 中读取和写入同一个二进制文件

Python 命令行 'file input stream'

java - 如何将此 lambda 表达式转换为方法引用

java - 从 TextField 编辑 TableView 的值

Java- main 中文本文件的相对路径?

java - 如何使用 SwingWorker 返回列表