package main;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
/**
* Page 502
* @author 阿飞
* 用FileChannel读写文件
*
*/
public class FileChannelTester {
public static void main(String args[])throws IOException{
final int BSIZE=1024;
//向文件中写数据
FileChannel fc = new FileOutputStream("D:\\test.txt").getChannel();
fc.write(ByteBuffer.wrap("你好,".getBytes()));
fc.close();
//向文件末尾添加数据
//先按照“rw”访问模式打开D:\\test.txt文件,如果这个文件还不存在,RandomAccessFile的构造方法会创建该文件
fc = new RandomAccessFile("D:\\test.txt","rw").getChannel(); //RandomAccessFile不支持只写模式,因为把参数设为“w”是非法的
fc.position(fc.size()); //定位到文件末尾
fc.write(ByteBuffer.wrap("朋友!".getBytes()));
fc.close();
//读数据
fc = new FileInputStream("D:\\test.txt").getChannel(); //或者用下面的方法
// fc = new RandomAccessFile("D:\\test.txt","r").getChannel();
ByteBuffer buff = ByteBuffer.allocate(BSIZE);
fc.read(buff);
buff.flip();
Charset cs = Charset.defaultCharset();
System.out.println(cs.decode(buff));
fc.close();
}
}
分享到:
相关推荐
经过对Flume FileChannel相关源码的分析,导致FileChannel吞吐率下降的主要原因集中于事务的提交过程——commit
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
7.1 打开一个FileChannel 7.2 从FileChannel通道中读取数据 7.3 向FileChannel中写入数据: 7.4 关闭FileCha
import java.nio.channels.FileChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.filechooser.FileFilter; 实验...
【IT十八掌徐培成】Java基础第26天-06.FileChannel-RandomAccessFile-CopyFile.zip
在Java编程中,复制文件的方法有很多,而且经常要用到...我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之一
01-Java NIO-课程简介.mp4 02-Java NIO-概述.mp4 03-Java NIO-Channel-概述.mp4 04-Java NIO-Channel-FileChannel(介绍和示例).mp4 05-Java NIO-Channel-FileChannel详解(一)....15-Java NIO-Buffer-分配和读写数据.mp4
jruby-stdin-channel JRuby Java 扩展 gem,它从 Java System.in stdin 中提取可中断的FileChannel。 使用这个 gem,在阻塞read方法上调用close将解除阻塞,这与普通的 JRuby $stdin 。 使用close转义阻塞读取仅适用...
使用FileChannel#transferTo而不使用String比较。 安装 可从。 repositories { jcenter() } compile 'net.ypresto.qtfaststartjava:qtfaststart:0.1.0' 执照 MIT许可证。 有关原始源代码的信息 该产品基于qt-
javaSE 关于IO几种读取方式的性能比较 1.二进制数据 2.字符数据 3.压缩文件
首先,kafka的开发者们认为不需要在内存里缓存什么数据,操作系统的文件缓存已经足够完善和强大,只要你不搞随机写,顺序读写的性能是非常高效的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者...
1.1 阻塞 IO 2.3 FileChannel 介绍和示例 2.4 FileChannel 操作详解
教程内容涵盖:阻塞和非阻塞IO、Channel通道、Buffer缓冲区、Selector选择器、Pipe管道、FileLock文件锁,以及Path、Files、异步FileChannel和Charset字符编码等,并通过一个多人聊天室的综合案例,把所有的NIO知识...
简单几行代码,实现高速coyp文件
通道表示到实体,如硬件设备、文件、网络套接字或可以执行一个或多个不同 I/O 操作(如读取或写入)的程序组件的开放的连接。 在以往的java的IO操作的过程中都是面向字节流操作,并且读写操作是单向的操作,而在java...
FindFirstFile函数功能描述,及改函数的用法,示例代码
H264TrackImpl h264TrackImpl = new H264TrackImpl(new ... FileChannel fChannel = new FileOutputStream(new File("C://a.mp4")).getChannel(); mp4f.writeContainer(fChannel); fChannel.close();
13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 17-Java NIO-Buffer-缓冲区分片.mp4 18-Java NIO-Buffer-只读缓冲区.mp4 19-Java NIO-Buffer-直接缓冲区.mp4 21-Java NIO-Selector-概述....
(用于TCP网络编程,客户端和服务器端都能用) ServerSocketChannel (用于TCP网络编程,专用与服务器端) 常见的Buffer,用来缓冲读写数据。 ByteBuffer MappedByteBuffer DirectByteBuffer HeapByteBuffer ...
Jackcess是一个Java 类库,用来读写微软的Access 数据库。 Jackcess 1.2.9 这个小功能版本增加了一些功能,以方便实施参照完整性和更方便的数据库构造。另一种FileChannel的实现,现在是完全基于内存在更广泛的情况...