问题描述
- 从linux服务器中读取文件数据
-
现有一个需求:
在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作、重命名操作、不能修改日志文件的任何数据,保持日志文件的完整性。首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的;而在Linux下,可以得到完美解决。因为Linux的文件系统有别于windows,Linux不使用文件名,而是使用inode号码来识别文件。
现在的问题是,使用Apache的文件FTPClient读取文件时,不能保证你读取的数据文件会不会出现重命名等现象。
请问大家,有什么好的解决思路吗?
解决方案
你的意思是,刚准备读某个文件,结果它恰巧被重命名了? 然后读取直接报错:找不到文件、 是这个意思么。那就得加个锁了
解决方案二:
文件系统会处理,你读取的时候如果文件存在,或者文件重命名了,你就读相关内容
解决方案三:
现在的情况是,我在ftp时,添加了 断点续传 ,在文件名重命名的时候,读取的文件数据有一部分为重命名前数据,和一部分新文件中内容,还有就是,在ftp过程中,在读取文件时,你不能确定何时文件会重命名,此处不好确认,╮(╯▽╰)╭,所以寻求好的解决思路
时间: 2024-08-04 12:01:40