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

问题描述

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

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

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

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

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

解决方案

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

解决方案二:

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

解决方案三:

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

时间: 2024-08-04 12:01:40

解决-从linux服务器中读取文件数据的相关文章

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

问题描述 现有一个需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据:要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作.重命名操作.不能修改日志文件的任何数据,保持日志文件的完整性.首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的:而在Linux下,可以得到完美解决.因为Linux的文件系统有别于windows,L

android-如何从服务器中读取 pdf 内容并保存在文件中?

问题描述 如何从服务器中读取 pdf 内容并保存在文件中? 我有一个服务器链接,我需要读取pdf内容.我使用的下面的代码,但是它以其它的格式给出结果. public String readPDF() throws Exception{ BufferedReader in = null; String page = """"; try { HttpClient client = new DefaultHttpClient(); HttpGet request = ne

io-java执行linux命令从linux服务器上读取log日志文件,按行读从指定字符串开始读

问题描述 java执行linux命令从linux服务器上读取log日志文件,按行读从指定字符串开始读 [INFO ] 2015-09-23 11:22:06,691 [threadPoolTaskExecutor-41] com.sto.pdaplatform.module.rediscommon.core.ParseObjectFactory.getParseObjFactory(ParseObjectFactory.java:27) >>> the original data is

Linux系统中的文件类型及文件扩展名详解

  Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件). 一. 文件类型 Linux文件类型常见的有:普通文件.目录文件.字符设备文件和块设备文件.符号链接文件等,现在我们进行一个简要的说明. 1. 普通文件 我们用 ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意

java如何修改linux服务器下txt文件,

问题描述 java如何修改linux服务器下txt文件, 在linux服务器下面,有个txt文件,里面有三条数据,如何修改指定的那一条数据,那如何定位到指定的数据?比如我想修改2 55 66 77这条数据怎么定位到这条数据?txt文件内容格式如下:1 22 33 442 55 66 773 88 99 781 yy uu pp2 jj kk hh1 rr tt ww2 ww qq ee3 qq ff gg 解决方案 http://blog.csdn.net/jiangxinyu/article/

将一块新硬盘添加到Linux服务器中

现有硬盘容量的不足经常困扰着 Linux http://www.aliyun.com/zixun/aggregation/13879.html">系统管理员,最常见的原因是不断膨胀的数据和数量不断增加的用户以及在找到替代以前 Linux 服务器还必须正常执行大量的任务. 本篇讲述了如何利用两种方式将硬盘添加到Linux系统中.第一种方式是,将文件夹从一个已满分区移动到另一个空的分区中,然后将文件夹目录链接到两块硬盘中.另一种方式是,利用Linux逻辑分区管理器(LVM)合并几个分区为一个分

c#编程-C#中Parallel.For并行处理中读取文件时出现的错误

问题描述 C#中Parallel.For并行处理中读取文件时出现的错误 1.读取"d:/users/v-lingao/from_lei/wordsegmentation/testdata"目录下的所有txt文档,利用Parallel.For并行处理各个txt文档中的内容,每次读取一行存储到string line中,利用line = sr.ReadLine() (StreamReader sr); 没处理一行也入"d:/users/v-lingao/from_lei/words

图片-WebUploader中的uploadSuccess是自动调用的吗?怎么获取服务器中返回的数据?

问题描述 WebUploader中的uploadSuccess是自动调用的吗?怎么获取服务器中返回的数据? 5C WebUploader中的uploadSuccess是自动调用的吗?怎么获取服务器中返回的数据?我图片上传成功服务器也收到图片了,但是返回的数据前台接收不到,也没有执行uploadSuccess方法,这是怎么回事?各位大神,求助! 解决方案 http://fex.baidu.com/webuploader/doc/index.html#WebUploader_Uploader_eve

c# 循环从文本文档中读取一个数据,如何删除后继续循环

问题描述 做了个循环从文本文档中读取随机数据并显示在textbox中,如何去除显示出来的数据继续循环?就是说不能出现重复的数据,应该用什么语句删除掉该显示在textbox中的数据呢?我做出来的是把文档的内容全删掉了.麻烦高手给予解答. 解决方案 解决方案二:不懂..仅仅是个练习?还是什么具体的需求?为什么要随机数据显示到textbox?解决方案三:文件修改需要重写文件的,除非内存映射解决方案四:楼主贴现有的代码看看按理说应该一次性把文件内容都读到byte[]里,等处理好了再一次性写回去解决方案五