相关疑难解决方法(0)

我可以使用WatchService(而不是整个目录)查看单个文件更改吗?

当我试图注册一个文件而不是一个目录java.nio.file.NotDirectoryException被抛出.我可以监听单个文件更改,而不是整个目录吗?

java watchservice

62
推荐指数
7
解决办法
7万
查看次数

在Java中,监视附加到的文件的最佳/最安全模式是什么?

其他人的过程是通过在事件发生时一次添加一行来创建CSV文件.我无法控制文件格式或其他进程,但我知道它只会附加.

在Java程序中,我想监视这个文件,当附加一行时,读取新行并根据内容做出反应.暂时忽略CSV解析问题.监视文件以进行更改并一次读取一行的最佳方法是什么?

理想情况下,这将使用标准库类.该文件可能在网络驱动器上,所以我想要一些强大的失败.如果可能的话,我宁愿不使用轮询 - 我更喜欢某种阻塞解决方案.

编辑 - 鉴于标准类无法实现阻塞解决方案(感谢您的回答),最强大的轮询解决方案是什么?我不想每次都重新读取整个文件,因为它可能会变得非常大.

java nio file

12
推荐指数
2
解决办法
1万
查看次数

在Groovy中尾随文件

我想知道是否有一种简单的方法可以在Groovy中拖尾文件?我知道如何读取文件,但如何读取文件,然后等待添加更多行,读取,等待等等...

我有一个我确定是一个非常愚蠢的解决方案:

def lNum = 0
def num= 0
def numLines = 0
def myFile = new File("foo.txt")
def origNumLines = myFile.eachLine { num++ }
def precIndex = origNumLines

while (true) {
num = 0
lNum = 0
numLines = myFile.eachLine { num++ }

if (numLines > origNumLines) {
    myFile.eachLine({ line ->

    if (lNum > precIndex) {
            println line
        }
    lNum++
    })
}
precIndex = numLines

 Thread.sleep(5000)
}
Run Code Online (Sandbox Code Playgroud)

请注意,我对调用Unix"tail"命令并不感兴趣.除非它是唯一的解决方案.

groovy

9
推荐指数
1
解决办法
2654
查看次数

Java检测文件系统中的更改

我有一个文件夹,其中不断传输新文件.在Java中,检测文件系统中更改的最佳方法是什么(即,文件被转储的指定文件夹),并将新到达的文件添加到队列数据结构,以便我可以顺序处理每个传入的文件.

我知道File类中的listFiles()函数,但是使用它我只能获得瞬间可用的文件.当然,我可以继续轮询文件夹并使用线程获取其中的文件列表.但这是最好的方法还是有更好的方法来实现这一点.

java filesystems file

8
推荐指数
1
解决办法
3938
查看次数

使用Java自动重新加载已更改的文件

我有很多配置文件可以修改我的应用程序的行为方式.我希望能够进行更改,并在保存文件时立即反映在应用程序中.有没有Java库来帮助解决这个问题?

我可以简单地保存一个带有时间戳的文件列表,并在时间戳发生变化时不断检查后台线程.似乎并不太难,但也许有更有效的方法来做到这一点?某些属性更改后的自定义触发器会很好.

我使用的是Spring 3.1,是否有内置的机制或解决方案可以很好地与Spring配合使用?

更新:显然JDK7现在通过其 Watch Service API包含此功能:"大多数文件系统实现都具有对文件更改通知的本机支持.Watch Service API利用此支持(如果可用).但是,当文件系统不支持此机制时,Watch Service将轮询文件系统,等待事件." 所以这是我迁移到JDK7的动力.

java file-io spring java-ee java-ee-6

7
推荐指数
1
解决办法
6270
查看次数

Java File.list()一致的顺序?

这是一个非常糟糕的问题(在我看来),我尽力找到自己有用的文档,运气不好 - 无论如何,这里是:

我有代码需要对目录中的所有文件执行某些操作.我在File对象中设置目录,并使用fileObject.list()迭代目录中的文件.我让这段代码在一夜之间运行,并且(经过多次骚动)在某些时候崩溃了.我想弄清楚这发生了什么事(是的,我记录得很糟糕).现在,根据这个javadoc,在列出文件时无法保证订单(按字母顺序或其他方式),我想知道是否有任何一致性保证?这意味着当我运行相同的代码两次时,我会得到完全相同的文件顺序吗?逻辑告诉我它应该并且我已经恢复了基于此的操作,但我对此持怀疑态度.此外,我很好奇javadoc中"没有具体的订单意味着什么".

java

5
推荐指数
1
解决办法
5768
查看次数

如何判断文件是否已重命名?

我有一个程序监视日志文件的更改.该程序使用FileInputStream来继续读取文件.同时,日志文件可能会被轮换:重命名旧日志文件,并将新日志条目写入新文件.

我的程序如何确定文件是否重命名,以便切换到新日志文件的读取?

java

3
推荐指数
1
解决办法
1089
查看次数

Jnotify是如何工作的

我能够将Jnotify听力事件用作文件编辑,修改等.我关注的是Jnotify的工作原理.我的意思是它使用get事件.在资源使用的参考中使用是否安全.我读了另一个问题 - /sf/ask/777000241/ - 它消耗了大量资源.

我可以解决我的问题的另一种方法是while循环直到条件然后程序关闭.

哪个更好用,消耗更少的资源.

java jnotify

2
推荐指数
1
解决办法
5100
查看次数

标签 统计

java ×7

file ×2

file-io ×1

filesystems ×1

groovy ×1

java-ee ×1

java-ee-6 ×1

jnotify ×1

nio ×1

spring ×1

watchservice ×1