怎样将手机网站把图片做成视频的APPAPP

java如何删除文件的某一行数据呢,前提是文件比较大?
避免那种把文件采用输入流读取出来,然后修改,然后采用输出流保存到文件这种操作!!
把这一行标记为不垃圾数据,而不是删除。
--- 共有 2 条评论 ---
例如把这一行的数据全部标记为在这个文件中不会出现的字符,如||||||||||||||||||||||||||||||||||。至于修改,相当于添加一个新的记录,同时用上面的方法标记已经存在的行为不在使用。过一段时间整理一下这个文件,逐行读取这个文件到新文件,删除掉的行不写入新文件。标记法有个好处。不会影响文件的索引数据。当然更新和新添加的记录需要更新索引。
嗯,是这个意思,怎么标记呢!!其中某一行,已经是写好的了,中间如何修改这一行的数据呢!!
无论任何语言,都必须先将文件读入内存里面,然后在内存中操作,再输出到磁盘上。可以使用一些技巧如多线程来加快效率,但是这个基本过程是不会变的。
某种程度上取决于你文件的结构。好比XML文件,有基于事件驱动的解析,也有一次读入到内存的解析方法,各有优缺点,你的文件结构要不好,那也没什么好办法。
首先你自己要想好了,是要节省时间还是要节省空间,节省时间,就尽量读入到内存处理,节省空间,就将文件逻辑上分成几部分,比如分成10份,线程池里放几个线程处理单独一份,统计每一分的处理结果,最后合并
逻辑上内不能分开,就要看你的文件结构合不合理,毕竟你不是仅仅要一个统计结果,而是读写综合的
--- 共有 1 条评论 ---
尽最大能力节省时间,但是文件是二进制文件,数据会比较多,想中间找到某一条数据,直接修改它,应该是找到某一条数据的起始位置,坐标从这个位置开始,把这条数据的长度重新写0。
每次只读一行 &然后处理一行写入到新文件里。
--- 共有 1 条评论 ---
这个操作非常频繁,文件还比较大,实时操作文件的,这个方法单一操作ok,实时读写,会跟不上我的时间要求!!!1、将11.sql文件中"prompt"替换为"--prompt",然后保存为111.sql文件
sed -e "s,prompt,--prompt," 11.sql & 111.sql
sed 's/^prompt/--prompt/g'&11.sql & 111.sql
2、删除11.sql中包含insert into 的行,然后保存为111.sql
sed '/insert into/d'&&11.sql & 111.sql
sed.exe命令行下在文件中查找并替换匹配的字符串的工具,批处理重要文件。步骤:放入本地磁盘(C)&windows&system32(or 64)中即可!
sed命令详解 转载:http://blog.chinaunix.net/u/22677/showart_1076318.html 1.简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。 2.定址定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。 地址是一个数字,则表示行号;是&$"符号,则表示最后一行。例如: sed -n '3p' datafile只打印第三行
只显示指定行范围的文件内容,例如:
# 只查看文件的第100行到第200行sed -n '100,200p' mysql_slow_query.log复制代码
地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。例如:
sed '2,5d' datafile#删除第二到第五行sed '/My/,/You/d' datafile#删除包含"My"的行到包含"You"的行之间的行sed '/My/,10d' datafile#删除包含"My"的行到第十行的内容
3.命令与选项
sed命令告诉sed如何处理由地址指定的各输入行,如果没有指定地址则处理所有的输入行。
3.1 sed命令
在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用&\&续行
用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行
在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行
把模式空间里的内容复制到暂存缓冲区
把模式空间里的内容追加到暂存缓冲区
把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
列出非打印字符
读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
结束或退出sed
从文件中读取输入行
对所选行以外的所有行应用命令
用一个字符串替换另一个
在行内进行全局替换
将所选的行写入文件
交换暂存缓冲区与模式空间的内容
将字符替换为另一字符(不能对正则表达式使用y命令)
3.2 sed选项
进行多项编辑,即对输入行应用多条sed命令时使用
取消默认的输出
指定sed脚本的文件名
4.退出状态sed不向grep一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。5.正则表达式元字符 与grep一样,sed也支持特殊元字符,来进行模式查找、替换。不同的是,sed使用的正则表达式是括在斜杠线"/"之间的模式。如果要把正则表达式分隔符"/"改为另一个字符,比如o,只要在这个字符前加一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可。例如:sed -n '\o^Myop' datafile
行首定位符
匹配所有以my开头的行
行尾定位符
匹配所有以my结尾的行
匹配除换行符以外的单个字符
匹配包含字母m,后跟两个任意字符,再跟字母y的行
匹配零个或多个前导字符
匹配包含字母m,后跟零个或多个y字母的行
匹配指定字符组内的任一字符
匹配包含My或my的行
匹配不在指定字符组内的任一字符
匹配包含y,但y之前的那个字符不是M或m的行
保存已匹配的字符
1,20s/\(you\)self/\1r/
标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。
保存查找串以便在替换串中引用
s/my/**&**/
符号&代表查找串。my将被替换为**my**
词首定位符
匹配包含以my开头的单词的行
词尾定位符
匹配包含以my结尾的单词的行
/9\{5\}/ 匹配包含连续5个9的行
匹配包含至少连续5个9的行
至少m个,但不超过n个x
/9\{5,7\}/
匹配包含连续5到7个9的行
6.范例 6.1 p命令命令p用于显示模式空间的内容。默认情况下,sed把输入行打印在屏幕上,选项-n用于取消默认的打印操作。当选项-n和命令p同时出现时,sed可打印选定的内容。 sed '/my/p' datafile#默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。
sed -n '/my/p' datafile#选项-n取消sed默认的打印,p命令把匹配模式my的行打印一遍。
命令d用于删除输入行。sed先将输入行从文件复制到模式空间里,然后对该行执行sed命令,最后将模式空间里的内容显示在屏幕上。如果发出的是命令d,当前模式空间里的输入行会被删除,不被显示。
sed '$d' datafile#删除最后一行,其余的都被显示
sed '/my/d' datafile#删除包含my的行,其余的都被显示
sed 's/^My/You/g' datafile#命令末端的g表示在行内进行全局替换,也就是说如果某行出现多个My,所有的My都被替换为You。
sed -n '1,20s/My$/You/gp' datafile#取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。
sed 's#My#Your#g' datafile#紧跟在s命令后的字符就是查找串和替换串之间的分隔符。分隔符默认为正斜杠,但可以改变。无论什么字符(换行符、反斜线除外),只要紧跟s命令,就成了新的串分隔符。
-e是编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。
sed -e '1,10d' -e 's/My/Your/g' datafile
#选项-e用于进行多重编辑。第一重编辑删除第1-3行。第二重编辑将出现的所有My替换为Your。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。
r命令是读命令。sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上。
sed '/My/r introduce.txt' datafile#如果在文件datafile的某一行匹配到模式My,就在该行后读入文件introduce.txt的内容。如果出现My的行不止一行,则在出现My的各行后都读入introduce.txt文件的内容。
6.6 w命令sed -n '/hrwang/w me.txt' datafile
6.7 a\ 命令
a\ 命令是追加命令,追加将添加新文本到文件中当前行(即读入模式缓冲区中的行)的后面。所追加的文本行位于sed命令的下方另起一行。如果要追加的内容超过一行,则每一行都必须以反斜线结束,最后一行除外。最后一行将以引号和文件名结束。
sed '/^hrwang/a\&hrwang and mjfan are husband\&and wife' datafile#如果在datafile文件中发现匹配以hrwang开头的行,则在该行下面追加hrwang and mjfan are husband and wife
6.8 i\ 命令
i\ 命令是在当前行的前面插入新的文本。
6.9 c\ 命令
sed使用该命令将已有文本修改成新的文本。
6.10 n命令
sed使用该命令获取输入文件的下一行,并将其读入到模式缓冲区中,任何sed命令都将应用到匹配行紧接着的下一行上。
sed '/hrwang/{n;s/My/Your/;}' datafile
注:如果需要使用多条命令,或者需要在某个地址范围内嵌套地址,就必须用花括号将命令括起来,每行只写一条命令,或这用分号分割同一行中的多条命令。 6.11 y命令该命令与UNIX/Linux中的tr命令类似,字符按照一对一的方式从左到右进行转换。例如,y/abc/ABC/将把所有小写的a转换成A,小写的b转换成B,小写的c转换成C。 sed '1,20y/hrwang12/HRWANG^$/' datafile#将1到20行内,所有的小写hrwang转换成大写,将1转换成^,将2转换成$。#正则表达式元字符对y命令不起作用。与s命令的分隔符一样,斜线可以被替换成其它的字符。
6.12 q命令
q命令将导致sed程序退出,不再进行其它的处理。
sed '/hrwang/{s/hrwang/HRWANG/;q;}' datafile
6.13 h命令和g命令
#cat datafile
My name is hrwang.
Your name is mjfan.
hrwang is mjfan's husband.
mjfan is hrwang's wife.
sed -e '/hrwang/h' -e '$G' datafile
sed -e '/hrwang/H' -e '$G' datafile
#通过上面两条命令,你会发现h会把原来暂存缓冲区的内容清除,只保存最近一次执行h时保存进去的模式空间的内容。而H命令则把每次匹配hrwnag的行都追加保存在暂存缓冲区。
sed -e '/hrwang/H' -e '$g' datafile
sed -e '/hrwang/H' -e '$G' datafile
#通过上面两条命令,你会发现g把暂存缓冲区中的内容替换掉了模式空间中当前行的内容,此处即替换了最后一行。而G命令则把暂存缓冲区的内容追加到了模式空间的当前行后。此处即追加到了末尾。
7. sed脚本
sed脚本就是写在文件中的一列sed命令。脚本中,要求命令的末尾不能有任何多余的空格或文本。如果在一行中有多个命令,要用分号分隔。执行脚本时,sed先将输入文件中第一行复制到模式缓冲区,然后对其执行脚本中所有的命令。每一行处理完毕后,sed再复制文件中下一行到模式缓冲区,对其执行脚本中所有命令。使用sed脚本时,不再用引号来确保sed命令不被shell解释。例如sed脚本script:
#handle datafile3i\~~~~~~~~~~~~~~~~~~~~~3,$s/\(hrwang\) is \(mjfan\)/\2 is \1/$a\We will love eachother forever!!
#sed -f script datafileMy name is hrwangYour name is mjfan~~~~~~~~~~~~~~~~~~~~~mjfan is hrwang's husband.
#啦啦~~~mjfan is hrwang's wife.We will love eachother forever!!
阅读(...) 评论()java 替换文件中的某一行 - IO,文件读取 - Java - ITeye论坛
java 替换文件中的某一行
锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
荖衲呮鼡彯渘
等级: 初级会员
来自: 湖南
发表时间:&&
相关知识库:
有一个文件,文件中有很多内容,如何最快速的替换文件中的某一行。
文件中的内容为:
阿弥陀佛!
要将文件中的 小明! 替换为 123456 。
不重写文件,不替换文件,文件较大考虑性能等问题。
求高手指教,如何实现?
等级: 初级会员
来自: 北京
发表时间:&&
打开需要替换的文件打开拟定替换后的文件循环&&& 读一行&&& 是否替换&&& 写文件删除需要替换的文件修改替换后的文件名
请登录后投票
等级: 初级会员
来自: 江西
发表时间:&&
java.io.RandomAccessFile可以访问任意文件中的位置并替换
请登录后投票
荖衲呮鼡彯渘
等级: 初级会员
来自: 湖南
发表时间:&&
jackra 写道
打开需要替换的文件打开拟定替换后的文件循环
写文件删除需要替换的文件修改替换后的文件名
这样需要重新写文件,效率很低!
请登录后投票
等级: 初级会员
来自: 北京
发表时间:&&
荖衲呮鼡彯渘 写道
jackra 写道
打开需要替换的文件打开拟定替换后的文件循环
写文件删除需要替换的文件修改替换后的文件名
这样需要重新写文件,效率很低!
除非你直接改硬盘
微软的offic这么干,肯定有他不可道人的原因。
请登录后投票
chenkan2000
来自: 上海
发表时间:&&
RandomAccessFile是覆盖文件中的内容,如果替换的内容长于原来的内容,就有问题了。所以创建一个新文件是需要的,可以想办法提高复制效率。
请登录后投票
等级: 初级会员
发表时间:&&
正则表达式
请登录后投票
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术linux中如何替换文件中的字符串
我的图书馆
linux中如何替换文件中的字符串
方法有二:&(一)通过vi编辑器来替换。参考博文:&vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用编辑软件进行替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。:s/well/good/ 替换当前行第一个 well 为 good:s/well/good/g 替换当前行所有 well 为 good:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 goodn 为数字,若 n 为 .,表示从当前行开始到最后一行:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符:s#well/#good/# 替换当前行第一个 well/ 为 good/:%s#/usr/bin#/bin#g可以把文件中所有路径/usr/bin换成/bin&(二)Sumly法直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。)参考博文:&例1执行命令:perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt上面的意思是说将www文件夹下所有的htm和txt文件中的“China”都替换为“Sumly”&例2执行命令:perl -p -i -e "s/memory_production/memory_production2/g" ./*.sql&上面的意思是将当前目录下所有的sql文件中的“memory_production”替换成“memory_production2”======================================linux sed 批量替换多个文件中的字符串/linux/accidence/10.htmllinux下批量替换文件内容&  1、网络上现成的资料&  格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`Svn中文网  linux sed 批量替换多个文件中的字符串  sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`  例如:替换/home下所有文件中的www.admin99.net为admin99.net&  sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home`  exp:sed -i "s/shabi/$/g" `grep shabi -rl ./`&  2、自己额外附加&  2.1 将文件1.txt内的文字“garden”替换成“mirGarden”  # sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单  2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden”&## sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已&====================================Linux下如何同时替换多个文件中的文本或字符串/jiqing0925/blog/item/0e97ea42a9ad14.html====================================作者:吉庆(
)主页:/jiqing0925转载请保留作者信息。-------------------做一件比较复杂的事通常存在多种方法。一次性替换多个文件中的文本是我们常遇到的问题,下面是解决这个问题的三种方法:1. vi 方法参见vim用户手册26.
改动多个文件假定你有个变量名为 "x_cnt" 而你要把他改为 "x_counter"。这个变量在多个 C 文件都被用到了。你需要在所有文件中作此改动。你得这么做。
把所有相关文件放进参数列表:
:args *.c这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行置换命令:
:argdo %s/\&x_cnt\&/x_counter/ge | update命令 ":argdo" 把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。
作为参数的替换命令 "%s" 作用于所有文本行。它用 "\&x_cnt\&" 来查找"x_cnt"。 "\&" 和 "\&" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 或"x_cnt2"。
替换命令的标记中包含 "g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"。标记 "e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 命令就会在遇到第一个找不到 "x_cnt" 的文件时中断。
字符 "|" 分隔两条命令。后面的 "update" 命令将那些有改动的文件存盘。如果没有 "x_cnt" 被改成 "x_counter",这个命令什么也不做。还有一个 ":windo" 命令,用于在所有视窗内执行其参数所规定的命令。以及 ":bufdo"命令,对所有缓冲执行其参数所规定的命令。使用中要小心,因为你在缓冲列表中的文件数量可能超过你能想像的。请用 ":buffers" 命令 (或 ":ls") 来检查缓冲列表。2. perl方法可以在命令行下进行替换,仍然以vi方法中的例子进行讲解,把c文件中的"x_cnt" 改为 "x_counter"。可以执行以下命令:find . -name '*.c' -print0 | xargs -0 perl -pi -e 's/x_cnt/x_counter/g'xargs 把find命令的结果作为perl的参数。find的参数-print0和xargs的参数-0是防止文件名中有空格或新行造成错误,可以man xargs获得帮助。注意:&如果替换的字符包括&()[]/"'!?&等等这样的特殊字符,你必须在字符前加上反斜杠\&。这种方法的好处是不用启动编辑器,比较迅速。缺点是容易出现不想要的替换,例如:把px_cnt替换成了px_counter。3. sed仍以上面的例子讲解:find . -name "*.c" -print0 | xargs -0 sed -i 's/x_cnt/x_counter/g'优缺点和perl方法相同。以上方法的差异只在于使用工具的不同,相信肯定还有别的工具能办到这件事。比如emacs,肯定也能做到这些,只是因为我不用emacs,所以不熟悉。希望大家总结自己得心应手的方法。==================Linux sed批量替换多个字符串http://www.itqun.net/content-detail/105074.html比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`解释一下:-i 表示inplace edit,就地修改文件-r 表示搜索子目录-l 表示输出匹配的文件名这个命令组合很强大,要注意备份文件。(1)sed 'y//abCDEFGHIJ/' test_sedsed 'y//abCDEFGHIJ/' filenameabCDEFGHIJBCDEFGHIJACDEFGHIJABDEFGHIJABC注意变换关系是按两个list的位置对应变换其中:test_sed的内容是:(2)替换每行所有匹配sed 's/01/Ab/g' test_sedAb注意:第一行的0,1没有分别替换为A,b删除:d命令&&&&&&& *&&&&&&&&& $ sed '2d' example-----删除example文件的第二行。&&&&&&& *&&&&&&&&& $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。&&&&&&& *&&&&&&&&& $ sed '$d' example-----删除example文件的最后一行。&&&&&&& *&&&&&&&&& $ sed '/test/'d example-----删除example文件所有包含test的行。替换:s命令&&&&&&& *&&&&&&&&& $ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。&&&&&&& *&&&&&&&&& $ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。&&&&&&& *&&&&&&&&& $ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。&&&&&&& *&&&&&&&&& $ sed -n 's/\(love\)able/\1rs/p'
TA的最新馆藏[转]&[转]&

我要回帖

更多关于 把图片做成视频的APP 的文章

 

随机推荐