/**
* 使用传统的I/O读取文件内容
* @param filePath 文件路径
* @throws IOException
*/
public static void ioRead(String filePath) throws IOException {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[1024];
fis.read(b);
System.out.println(new String(b));
}
/**
* 使用NIO读取文件内容
* @param filePath 文件路径
* @throws IOException
*/
public static void nioRead(String filePath) throws IOException {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
FileChannel channel = fis.getChannel();
ByteBuffer b = ByteBuffer.allocate(1024);
channel.read(b);
byte[] by = b.array();
System.out.println(new String(by));
}
/**
* 传统I/O写文件
*
* @param filePath 文件路径
* @throws IOException
*/
public static void ioWrite(String filePath) throws IOException
{
File file = new File(filePath);
FileOutputStream fos = new FileOutputStream(file);
String[] contents = new String[] { "qian", "hao" };
for (String content : contents)
{
byte[] b = content.getBytes(Charset.forName("UTF-8"));
fos.write(b);
}
}
/**
* NIO写文件
* @param filePath 文件路径
* @throws IOException
*/
public static void nioWrite(String filePath) throws IOException
{
File file = new File(filePath);
FileOutputStream fos = new FileOutputStream(file);
// 获取文件通道
FileChannel channel = fos.getChannel();
// 设置文件缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
String[] contents = new String[] { "qian", "hao" };
// 将数据读入缓冲区中
for (String content : contents)
{
buffer.put(content.getBytes());
}
// 通道反转(将读通道转化为写通道)
buffer.flip();
// 将文件写入写通道中
channel.write(buffer);
}
/**
* 将一个文件内容复制到另外一个文件中
* @param resource 源文件路径
* @param destination 目标文件路径
* @throws IOException
*/
public static void nioCopyFile(String resource, String destination)
throws IOException
{
// 设置文件输入流
FileInputStream fis = new FileInputStream(resource);
// 设置文件输出流
FileOutputStream fos = new FileOutputStream(destination);
// 设置输入通道
FileChannel readChannel = fis.getChannel();
// 设置输出通道
FileChannel writeChannel = fos.getChannel();
// 创建缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
// 复制文件
while (true)
{
// 清空缓冲,使其接受新的数据
buffer.clear();
// 从输入通道中将数据写入缓冲区中
int len = readChannel.read(buffer);
// 判断是否文件已读取完成
if (len == -1)
{
break;
}
// 将缓冲区的数据些到另外一个通道,(输入通道反转到输出通道)
buffer.flip();
// 从输出通道将数据写到缓冲区,写入文件中
writeChannel.write(buffer);
}
}
分享到:
相关推荐
JAVA_NIO学习总结J
NULL 博文链接:https://edison87915.iteye.com/blog/729203
NIO的学习记录以及自己的总结,对关于NIO有个简单深刻的认识,可以应用在各个开发应用之中提升性能
最全的NIO学习资料总结! JAVA_NIO(全面细致).pdf,Java_NIO_细节.pdf nio原理与实例(看).png 提升网管通讯模块的消息吞吐量(两种模式比较).png
这是学习Java NIO过程中总结的核心概念,里面包含了基本的知识点,详细知识点也可以查看我的博客:pcwl_java里的Java NIO篇
niosocket及其开源框架MINA学习总结收集.pdf
自己总结的java中NIO的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
NIO学习总结 主要内容: NIO简介: Java NIO 是 java 1.4, 之后新出的一套IO接口NIO中的N可以理解为Non-blocking,不单纯是New。 NIO的特性/NIO与IO区别: 1)IO是面向流的,NIO是面向缓冲区的; 2)IO流是阻塞的,NIO流...
java.nio包的学习总结,看看确实有收获
涉及到java io, nio, aio相关知识点,学习过程中的一些总结,持续更新中,xmind 格式
java nio 的服务端完整实现,应该可以商用,但我没有真实投入商用,就是一个学习过程的总结,代码应该算是很完整,对学习nio应该是很有帮助,而且没有使用任何框架,但借鉴了很多框架的核心代码。
「喜欢的自提」 可以直接运行的代码,里面是我在工作中用来学和和测试的代码,一般是得到想要的测试结果,就直接用于实战项目中...17、BIO、NIO、AIO、Reactor、netty相关学习总结和测试(客户端/服务端通信测试demo)
XSocket的学习和总结 应用服务器网络应用网络协议.net编程 xSocket是一个易于使用的基于NIO库来构建高性能,可扩展的网络应用。 它支持写入以及服务器端的应用,以直观的方式客户端应用程序。 检测问题,如低水平...
无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 ...
48_Netty与NIO系统总结及NIO与Netty之间的关联关系分析 49_零拷贝深入剖析及用户空间与内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析与Gather操作在零拷贝中的作用详解 52_NioEventLoopGroup源码...
本书内容非常全面,涵盖了多册J2EE书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的废话、例子,以增加书本厚度,使得阅读者...
47_Netty服务器与客户端编码模式回顾及源码分析准备 48_Netty与NIO系统总结及NIO与Netty之间的关联关系分析 49_零拷贝深入剖析及用户空间与内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析与Gather...
Java IO 体系 - Java IO 体系 ...Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO