我一直在编写一个监视目录的程序,当在其中创建文件时,它会更改名称并将它们移动到新目录.在我的第一个实现中,我使用了Java的Watch Service API,当我测试1kb文件时,它运行良好.出现的问题是,实际上创建的文件是50-300mb.当发生这种情况时,观察者API会立即找到该文件,但由于它仍在被写入,因此无法移动它.我尝试将观察者放在循环中(生成异常,直到文件可以移动),但这看起来效率很低.
由于这不起作用,我尝试使用定时器,每隔10秒检查一次文件夹,然后尽可能移动文件.这是我最终选择的方法.
问题:无论如何在没有进行异常检查或不断比较大小的情况下发出文件写入信号?我喜欢为每个文件使用Watcher API一次,而不是使用计时器不断检查(并运行异常).
所有回复都非常感谢!
NT
有没有简单的方法将包含双字节字符的URL转换为绝对路径?
我问的原因是我想找到这样的资源:
URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
Run Code Online (Sandbox Code Playgroud)
程序找不到该文件.我知道我可以转换的所有空间的路径都包含'%20',但我真正的问题是我使用的是日语操作系统,当程序jar文件在日文文本的目录中时(例如デスクトップ)我得到的URL - 对目录名称进行编码,如下所示:
%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97
我想我可以得到UTF-8字节代码并将其转换为正确的字符来查找文件,但我想知道是否有更简单的方法来执行此操作.任何帮助将不胜感激.
NT
我有一个长约一千个字符的字符串,由L's,T和A组成.我很确定它有一个简单的模式,我想知道是否有任何快速简便的方法来寻找它.此字符串发生更改,因此这不仅仅是一次性的.
我正在寻找的模式是,例如,如果字符串是
LLLLLLLLAATAALLLLALLLLLLAATAALLLATLLLLLAATAALLAALLLLLAATAALL
Run Code Online (Sandbox Code Playgroud)
子串LLLLLAATAALL在此字符串中重复4次.我想搜索这样的子串,但我不知道它们从哪里开始,结束,有多少,以及它们在主串中有多长.
如果在Java中有任何工具来寻找这种东西,我们将非常感谢任何建议.
NT
嗨我正在写一个图形程序,我一直在寻找一种方法来获得正在使用的屏幕的物理尺寸.我可以以像素为单位获得屏幕大小以及逻辑分辨率.我似乎无法找到的任何地方都可以获得任何显示器规格中的物理尺寸(例如19" - 376 x 301 mm).问题是,这些信息甚至存储在操作系统的任何位置,当它加载时正在使用的特定屏幕的驱动程序?我正在编写的程序需要在Mac和Windows上运行.
谢谢!
NT