java定时器读取指定文件夹中文件名称和创建时间保存到数据库后复制文件到另外文件夹中后删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java定时器读取指定文件夹中文件名称和创建时间保存到数据库后复制文件到另外文件夹中后删除相关的知识,希望对你有一定的参考价值。

第一步:使用定时器读取指定文件夹中文件名称和创建时间保存到数据库,保存时根据文件名称判断数据库中是否存在记录,存在则将数据库中文件的修改时间赋值个创建时间。否则添加数据到数据库
第二步:将文件夹中文件复制到另外一个文件夹中,成功后将原先文件夹中文件删除。

定时器是每个1秒刷新一次。现在问题是文件数据添加到数据库成功。复制也成功。删除提示成功。可是原文件夹中文件删除了一部分。没有删除的文件会继续复制到目标文件夹中。现在找不到什么原因。有没有会啊,帮帮忙吧

从你描述看,应该是在复制(写)文件的时候,没有及时对操作的源文件进行关闭,导致后面删除不了这个文件

读取源文件并复制(写)文件后,要及时关闭源文件,确保能正常删除: fileReader.close();
参考技术A 因为你的刷新很快,是否有读取冲突?即删除时,系统正在读取。添加文件锁试试,避免对文件多次操作。追问

你好,请问文件锁怎么设置。我之前没有遇到过

追答

这种锁通常是逻辑锁。

你添加一个字符串变量在你的程序里,并储存你将要删除的文件名,而读取时,文件要提前与字符串比较,如果相同就跳过。等删除结束,将变量清空。

追问

不好意思啊,你的回答也是对的可是我只能把分给一个人

不好意思啊,你的回答也是对的可是我只能把分给一个人

追答

没有关系,问题解决了就好。

追问

呵呵,谢谢啊

参考技术B 自己先debug一下咯,是不是传的文件名错误等原因造成。

java怎么实现每天定时读取文件,然后在写到数据库中呢

求大神支招啊 最好有代码啊

不是java定时读取,而是系统调度
比如你写了一个java程序,这个程序是读取文件,写到数据库中。那么这个程序怎么才能定时启动。是操作系统调度的问题了。不是java的问题。所以要用操作系统的调度。
如果在win服务器下,可以下一个cmd文件。文件中调用java程序,然后将cmd设置成每天几点执行
如果是linxu或者unix下,则使用crontab调度。

当然,如果你非要用java程序来调度。那么这个程序肯定要常驻内存,并且进行睡眠。这种方式没有意义。
参考技术A 你可以用java自带的定时器Timer,调用timer中的schedule方法可以定时调用继承TimerTask类的线程,然后把你要执行的操作,读取任务,然后写到数据库放到TimerTask类的子类中。也可以用quatz来实现。追问

每天读取文件我实现了,写到数据库中不知道在run()方法怎么写

追答

写到数据库中,就是插入操作啊,你把插入数据库的操作代码,独立出来,在run方法中,定时调用,应该就可以了

参考技术B 每天定时读取文件这件事我觉得要用系统的计划任务来做,linux下就是cron。写到数据库中倒是可以用java做,但是你读取的是什么数据,要写到什么数据库中等等都是要考虑的问题啊。问题明确了才能有具体的解决办法。追问

文件是数据库每天生成的文件,写到oracle中去

追答

数据库备份文件?

参考技术C quartz这个就行了追问

我不会用Spring的这个啊

追答

学习啊,稍微看一下就好了啊,这个不是很难的

以上是关于java定时器读取指定文件夹中文件名称和创建时间保存到数据库后复制文件到另外文件夹中后删除的主要内容,如果未能解决你的问题,请参考以下文章

读取在java中存储为字符串的xml [重复]

java定时读取文件

Java怎么把某些参数(key=value)加密成密文保存在文件上, 在使用该软件系统时候,读取该文件,进行解密

java怎么实现每天定时读取文件,然后在写到数据库中呢

salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中

java如何创建Json文件?