从linux服务器中读取文件数据

现有一个需求:
在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作、重命名操作、不能修改日志文件的任何数据,保持日志文件的完整性。

首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的;而在Linux下,可以得到完美解决。因为Linux的文件系统有别于windows,Linux不使用文件名,而是使用inode号码来识别文件。

现在的问题是,使用Apache的文件FTPClient读取文件时,不能保证你读取的数据文件会不会出现重命名等现象。

请问大家,有什么好的解决思路吗?

3个回答

你的意思是,刚准备读某个文件,结果它恰巧被重命名了? 然后读取直接报错:找不到文件、 是这个意思么。那就得加个锁了

文件系统会处理,你读取的时候如果文件存在,或者文件重命名了,你就读相关内容

现在的情况是,我在ftp时,添加了 断点续传 ,在文件名重命名的时候,读取的文件数据有一部分为重命名前数据,和一部分新文件中内容,还有就是,在ftp过程中,在读取文件时,你不能确定何时文件会重命名,此处不好确认,╮(╯▽╰)╭,所以寻求好的解决思路

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问