- 浏览: 111800 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (98)
- java (27)
- jms (2)
- jta (0)
- 性能调优及内存分析 (4)
- 设计模式 (14)
- 框架 (6)
- 其它 (9)
- job (1)
- maven (1)
- 服务器 (2)
- 分布式 (3)
- ibatis (1)
- linux (0)
- mysql (0)
- 并发编程 (0)
- java多线程 (2)
- 前端跨域 (1)
- 线程dump分析 (0)
- velocity (0)
- 数据库 (2)
- 协议 (0)
- 监控 (0)
- 开源软件 (2)
- 算法 (0)
- 网络 (1)
- spring (1)
- 编码 (0)
- 数据结构 (0)
- HTable和HTablePool使用注意事项 (0)
- opencms (0)
- android (16)
- 操作系统 (2)
- top (0)
最新评论
-
hold_on:
@Override public boolea ...
android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片) -
achersnake:
123
Servlet中listener(监听器)和filter的总结 -
angel243fly:
我用了这个方法,还是报同样的错误,还有什么建议吗?
eclipse提示CreateProcess error=87错误的解决方法
转:http://stoneli88.iteye.com/blog/891288
在对文件进行写入操作时,我们经常会碰到的一个棘手的问题可能是:如何在一个已经有内容的文件末尾写入新数据而不覆盖掉原来的内容?现在本人介绍以下四种方法:
首先,假设在程序的当前目录中有一个文件“data.txt”,该文件中已经有内容,现在要进行的操作是在data.txt文件末尾定放字符串"Write in the end".
法一:
在FileOutputStream 或者 FileWriter 的构造器中加个参数 “true”,就如:
- FileOutputStream fos = new FileOutputStream( "data.txt" , true );
- //加个参数true表示在文件末尾写入,不加或者加上false表示在文件开头处定入
- fos.write("Write in the end" .getBytes()); //用write(byte[] b)写入字符串
- fos.close();//记得关闭文件流
或者可以用FileWriter
- FileWriter fos = new FileWriter( "data.txt" , true ); //同样加个参数true
- fos.write("Write in the end" ); //该类有不同于FileOutputStream的write(String s)
- fos.close();
法二:
利用java.nio.channel包里面的FileChannel类,该类有个position(long
newPosition),参数newPosition表示“计算从文件开始的字节数
”该方法的功能就是把指针位置设置在文件的newPosition处,而文件的末尾我们可以用FileChannel.size()来得到!也就是我们用
position(FileChannel.size())
就可以把指针指向末尾,从而写入新数据,就如:
- FileChannel fc = new RandomAccessFile( "data.txt" , "rw" ).getChannel(); // rw模式
- //必须用RandomAccessFile("data.txt", "rw").getChannel();
- //而不能用FileOutputStream.getChannel
- fc.position(fc.size()); // //把指针移到文件末尾
- fc.write(ByteBuffer.wrap("Write in the end " .getBytes())); //写入新数据
- fc.close()
- //如果我们硬是要用FileOutputStream.getChannel,可以写成:
- FileChannel fc = new FileOutputStream( "data.txt" , true ).getChannel(); //参数true也必须加上
- fc.position(fc.size());
- fc.write(ByteBuffer.wrap("Write in the end " .getBytes()));
- fc.close();
法三:
用RandomAccess类的seek(long pos)代替方法二的position(long newPosition),不多讲,看例题:
- RandomAccessFile rf = new RandomAccessFile( "data.txt" , "rw" );
- rf.seek(rf.length()); //length()方法,而不是上面的size()
- rf.writeChars("Write in the end" ); //wiriteChars写入字符串,写入的字符串中的每个字符在文件中都是占两个字节,比如write在文件中看到的是 w r i t e 。
法四:
利用FileChannel的 map(FileChannel.MapMode mode,long position,long
size)方法创建一个MappedByteBuffer(内存映射文件),但是可“读/写”的MappedByteBuffer必须通过
RandomAccessFile.getChannel.map()来创建,因为FileChannel.MapMode(文件映射模式的类型)只有三
种:
1,MapMode.READ_ONLY 只读
2,MapMode.READ_WRITE 读/写
3,MapMode.PRIVATE 专用
而我们要在文件末尾写入的话就必须有到“写文件”,也就是要用到MapMode.READ_WRITE
,如果我们用FileInputStream或者FileOutputStream来获取通道的话都是“只读”或者“只写”,就没办法与
MapMode.READ_WRITE
搭配起来,所以我们只能通过RandomAccessFile的"rw"模式来与MapMode.READ_WRITE搭配。
map方法中的参数:
1.mode :根据是按只读、读取/写入或专用(写入时拷贝)来映射文件,分别为 2.FileChannel.MapMode 类 中所定义的 READ_ONLY、READ_WRITE 或 PRIVATE 之一
3.position : 文件中的位置,映射区域从此位置开始;必须为非负数
4.size: 要映射的区域大小;必须为非负数且不大于 Integer.MAX_VALUE
有了position与size这两个参数,我们就可以把position设置为原文件的末尾,然后再写入size字节数
现在让我们一起来看下如何在文件末尾写入:
- FileChannel fc = new RandomAccessFile( "data.txt" , "rw" ).getChannel();
- long length = fc.size(); //有来设置映射区域的开始位置
- MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE,length,20 );
- //由于要写入的字符串"Write in the end"占16字节,所以长度设置为20就足够了
- mbb.put("Write in the end" .getBytes()); //写入新数据
发表评论
-
公钥,私钥和数字签名这样最好理解
2012-12-04 13:01 0一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2 ... -
btrace学习二--btrace一个简单例子
2012-11-09 16:28 0btrace安装好了,就看一些语法吧。可以到btrace的官方 ... -
Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
2012-10-25 20:27 0【目录】 一、【基础知识——扫盲】 二、【DOM、S ... -
BTrace使用简介
2012-05-23 16:23 905转:http://rdc.taobao.com/team/ ... -
java初始化顺序
2012-05-14 15:39 0转:http://www.cnblogs.com/miniwi ... -
HTMLDecoder,&#开头的编码换转成中文
2012-05-11 10:06 1120转:http://blog.sina.com.cn/s/blo ... -
类初始化顺序
2012-04-09 17:33 0转:http://www.cnblogs.com/miniwi ... -
Heritrix的eclipse配置启动
2012-04-07 11:46 0转:http://blog.csdn.net/lifesoft ... -
执行Runtime.exec异常: error=12,Cannot allocate memory
2012-03-26 10:03 1244转:http://blog.csdn.net/chifen ... -
使用Memory Analyzer tool(MAT)分析内存泄漏(二) ZZ
2012-03-13 08:41 1184http://www.blogjava.net/rose ... -
使用Memory Analyzer tool(MAT)分析内存泄漏(一)
2012-03-13 08:40 854转: http://www.blogjava.net/ro ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-03-12 12:52 0最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
Java内存模型
2012-02-23 19:57 0(原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来 ... -
Runnable、Callable、Executor、Future关系解读
2012-02-22 10:02 0在再度温习Java5的并发编程的知识点时发现,首要的就是把Ru ... -
HashCode本质
2012-02-22 09:05 01.hashcode是用来查找的, ... -
Java并发--任务执行.
2012-02-17 19:40 0PS: 发到博客的文章竟然发布不到论坛, 所以将文章从博客 ... -
java并发编程-Executor框架
2012-02-17 19:39 0Executor框架是指java 5中引入的一系列并发库中 ... -
Java 并发核心编程
2012-02-17 16:28 0内容涉及: 1、关于java ... -
future使用
2012-02-17 14:53 0在Java中,如果需要设 ... -
常用 Java 静态代码分析工具的分析与比较
2012-02-16 14:20 0转:http://www.ibm.com/develope ...
相关推荐
做IAP升级需要用到BIN文件,为了确保BIN文件正确,于是在BIN文件的末尾增加了CRC校验。校验值是通过工具自动生成的并添加的。 1.下载工具解压到keil任意的文件下,这里我是放在D:\Keil_v5\ARM\ARMCC文件夹内。这个...
在本课中,我们探讨了在 LabVIEW 中访问文件时如何将数据写入文件,和从文件读取数据。 一个典型的文件 i/o 编程流程,首先您将打开或创建或替换文件,然后您将读取或写入文件,第三你将在完成后关闭文件,最后你将...
在各种后缀格式的图片视频等文件末尾增加数据,改变文件MD5,同时并不影响文件的浏览
在一些特定的手机上,音频文件末尾有小部分数据没有播放出来,音频就结束了。因为音频文件解码用的是系统Hardware的方案,在部分手机上,音频播放结束标记系统没有返回,导致判断音频文件解码结束时,发生提前结束的...
主要介绍了java实现追加内容到文件末尾的常用方法,结合具体实例分析了java文件流及写入指针等相关操作技巧,需要的朋友可以参考下
该代码可以处理100万数据量的excel文件,xlsx文件数据量太大,用普通的读法会报内存溢出错误,所以用官网提供的方法,一条一条的读取大excel文件,本例子从这点出发,组装excel里读取的单条数据为list,在根据需求...
易语言文件尾部附加数据源码,文件尾部附加数据,附加数据_写出数据,附加数据_读入数据,附加数据_删除附加
命令行工具。 检查或显示指定文件(支持子目录和通配符)末尾是否为若干(16..512)个0的工具...用于找出仅部分被成功拷贝的大文件,监视或查看大日志文件末尾内容等。 用法: DirTail0.exe 指定文件 字节数 [显示字节内容]
NULL 博文链接:https://gojava1.iteye.com/blog/750718
linux_c语言_fopen函数从文件头读到文件末尾源码
C#打开二进制图片文件 读写并追加数据 代码,详细介绍了对jpg文件打开然后往末尾追加二进制数据的过程,能够在jpg图片中隐藏信息,并能够识别这些密码
关于Go语言读写文件,网上很多教程了,但是今天有个需求,想要把内容追加写到文件末尾,在网上找了很久才找到答案,现在分享给大家,有需要的可以参考借鉴。
创建文件我们用到函数 fopen ( string filename, string mode ) 参数filename为创建文件名 ...‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 ‘a+’ 读写方式
本文将介绍读取bin文件的方法在十六数的数据验证通过 首先用fopen函数打开bin文件(关于函数的说明,大家可以百度,或在matlab里help一下,这里不在详细介绍) 然后判断是否为文件末尾,自动读取整个文件。之后用...
文件夹代码是个非常有用的Java程序片段,希望能对你有用
追加内容到文件末尾的几种常用方法_java.
本文为大家提供一个java向文件末尾添加内容的示例分享,大家参考使用吧
就是在文件末尾写入一个UUID码,写入UUID码,这样就确保了这个世界上不会存在MD5一样的文件,除非你 把我这个UUID码拿走去生成这个文件. 关键代码:此处我采用的是边读编写,节省内存,读写完之后,我在末尾将UUID转成byte...
将22的文件内容复制到11文件的末尾,11文件的效果就是: hello world 解决办法: cat 22 >> 11 >>的意思是追加的意思 > 的意思是重定向的意思,会覆盖原先的内容 小Tips: 将a.txt文件的内容清除,并且使得文件的...
将缓冲区中的内容写入文件中,学习Delphi中FileWrite的使用方法: begin H := FileOpen('d:\ini.txt',fmOpenWrite); if H <> -1 then begin FileSeek(H,0,2);//将文件指针定位到文件的末尾 buffer := '...