Java FileChannel读写文件例子

FileChannel如何读写文件? channel 必须关闭,不过调用了 FileInputStream、FileOutputStream 或者 RandomAccessFile 的 close 方法会间接地调用 channel 的 close 方法。设置当前位置时,如果设置为文件的末尾会读取会返回 -1。这时写入,会追加内容,但要注意如果 position 超过了文件末尾,再写入时在新内容和原末尾之间会有空洞(00)。会从channel读取数据填充ByteBuffer,返回值表示读到了多少字节,-1 表示到达了文件的末尾。 阅读详情

在Java NIO包中FileChannel是用于读取、写入、映射和操作文件的通道。

下面通过利用FileChannel来进行文件的读写例子

1从txt文件中读取数据并且输出到控制台

public static void main(String[] args) throws IOException {
		/*需要通过 FileInputStream、FileOutputStream 或 RandomAccessFile对象来获取FileChannel
		 * */
		FileInputStream f1 = new FileInputStream("b.txt"); 
		FileChannel fc1 = f1.getChannel();
		ByteBuffer b1 = ByteBuffer.allocate(25);//初始化缓冲区大小
		fc1.read(b1);//将文件通道里面的字节读到缓冲区中
		b1.flip();//此方法将position置为0,limit放到position位置
		while(b1.hasRemaining()) {// position<limit时返回true
			System.out.println((char)b1.get());
		}
		fc1.close();//关闭通道
	}
此例子有两点细节:

第一 在使用fc1.read(b1)后此时缓冲区内的position(当前读取位置)和limit(读写上限的位置)是一样的,可以调用ByteBuffer的position()方法和limit()方法进行比较

第二 使用b1.flip()是为了将position置为0,limit放到position位置,在jdk源码中flip方法有:

 public final Buffer flip() {
        limit = position;
        position = 0;
        mark = -1;
        return this;
    }
所以接下来用while循环将缓冲区里面的字节转换成字符输出,hasRemaining源码如下:

public final boolean hasRemaining() {
        return position < limit;
    }
2将字符串写入txt文件:

public static void main(String[] args) throws IOException {
		FileOutputStream f1 = new FileOutputStream("cd.txt");
		FileChannel fc1 = f1.getChannel();
		ByteBuffer buffer = ByteBuffer.wrap(new String("OPP555P").getBytes());
		fc1.write(buffer);
		fc1.close();//关闭通道
	}









【vue看板】 大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。 阅读详情

相关推荐

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 301

Java FileChannel文件的读写实例

文件通道FileChannel是用于读取,写入,文件的通道。FileChannel只能被InputStream、OutputStream、RandomAccessFile创建。使用fileChannel.transferTo()可以极大的提高文件的复制效率,他们读和写直接建立了通道,还能有效的避免文件过大导致内存溢出。

lovoo的博客 2355

从Applied Intelligence被拒到The Visual Computer录用:我的计算机视觉论文投稿时间线全记录(含详细修改意见)

本文详细记录了作者从Applied Intelligence被拒到The Visual Computer成功发表计算机视觉论文的全过程,重点分享了如何将模糊的拒稿理由转化为具体改进方案。文章包含技术改进细节、写作调整策略以及期刊选择经验,为计算机视觉领域的研究者提供了实用的投稿指南。

weixin_30872499的博客 468

NIO--FileChannel基本使用:读文件、写文件、文件传输

NIO FileChannel的基本使用。

weixin_49702090的博客 2555

链式中介效应结果解读:从Bootstrap置信区间到实践意义

本文深入解析链式中介效应结果的解读方法,从Bootstrap置信区间的应用到实践意义的阐述。通过实际案例展示如何分析总效应、直接效应和间接效应,并强调效应量评估的重要性。文章还提供了构建逻辑解释的三步法,以及敏感性分析和报告撰写的实用技巧,帮助研究者准确解读链式中介效应。

weixin_33690367的博客 718

OpenCV简单应用:图像模糊处理

OpenCV是一个广泛使用的开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV对图像进行模糊处理,并提供相应的源代码。该函数接受两个参数:第一个参数是输入图像,第二个参数是指定模糊核大小的元组。在这个例子中,我们使用了一个5x5的模糊核。您可以尝试不同大小的模糊核,以获得不同程度的模糊效果。函数和指定不同大小的模糊核,我们可以实现不同程度的模糊效果。该函数接受两个参数:第一个参数是窗口的名称,第二个参数是要显示的图像。在上面的代码中,我们首先使用。要运行上述代码,请将。

MwgmPhilosophy的博客 290

JAVA NIO基础(一)

学习目标: 1.NIO和IO的区别 2.理解Channel和Buffer 3.会使用FileChannel进行输入输出 4.理解内存映射文件 5.了解Scatter和Gather 6.熟悉阻塞和非阻塞模式 NIO(NEW IO) java 1.4 引入的一个新的IO API。 NIO与原来的IO具有相同的作用和目的,但是使用方式不同。 NIO支持面向缓冲区,基于通道的IO操作。NIO将以更加安全的方式进行文件的读写操作。 NIO核心组件 Channel(相当于一个个管道) Buff

weixin_45836787的博客 1847

(第七章)FAST开发方法

摘要: FAST是一种轻量级、业务驱动的系统分析与开发框架,适用于中小型项目,强调快速交付和组件化开发。其核心包括8个阶段:范围定义、问题分析、需求分析、逻辑设计、决策分析、物理设计、构造测试和安装发布。特点为结构化、用户参与、迭代渐进,适合需求明确且需快速交付的项目。与RUP(重量级)、敏捷(极轻量)相比,FAST更侧重业务分析和模块化开发。软考中可通过口诀“范围问题求逻辑,决策物理构发布”记忆阶段,并掌握五大开发方法(瀑布、原型、FAST、RUP、敏捷)的核心区别及适用场景。

echo的博客 918

将字符串写入到文件中NIO FileChannel

// 通过Java NIO将文本内容写入文本文档中 FileOutputStream outputStream = new FileOutputStream(new File("data.txt")); FileChannel channel = outputStream.getChannel(); opStream = new ByteSeq(); // 初始化字节型序列 ByteBuf...

^_^TaeYang-Jade^_^ 1030

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1283

Python数据分析全流程指南:从数据采集到可视化呈现的实战解析

在数字化转型浪潮中,数据分析已成为企业决策的核心驱动力。Python凭借其丰富的生态库和简洁的语法,成为数据分析师的首选工具。本文将以实战案例为脉络,拆解数据分析全流程的关键环节,通过具体代码和场景说明如何用Python完成从数据采集到可视化呈现的完整链路。

这家伙很懒,什么都没有留下 1681

FileChannel读写文件

package com.timothy.socket.nio.file; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; im...

yangyixiao的专栏 662

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java nio 实现文件读写

package com.cloudcore.usercenter.consumer.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import ja...

美好清新 1920

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

从FileInputStream使用FileChannel

import java.io.FileInputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class MainClass {   private static final int BSIZE = 1024;   public static void main(S

暮眼蝶 2899

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java 内存映射读取文件_Java内存映射文件

package com.what21.nio03;import java.io.File;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;public class MapFiles {/**...

weixin_26854829的博客 450

[例] 用MappedByteBuffer更新文件内容

import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class Test_00 { public static void main(String[

极品飞猪 1238

netty学习笔记四、文件读取、写入代码实现

package com.hao.demo.netty.nio; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; /** * @author haoxiansheng * @date 2020-05-11 */ public class NIOFileChannel03 { pu.

promiseful的博客 1532

对于大文件的读写操作

import java.io.*;import java.nio.*;import java.nio.channels.*;public class LargeMappedFiles {    static int length = 0x8FFFFFF;  public static void main(String[] args) throws Exception   {    Mapped

Leo的专栏 974

使用NIO来操作文件

JAVA的NIO主要用于对文件的读写操作,效率也比普通IO要高一些。在对文件的操作中,不但支持Byte格式的操作,还支持整数,浮点等基本类型的操作,非常方便。在对大文件的操作中,其特有的文件映射概念可以不用将整个文件都读入内存,就能够对文件的任意位置进行读写,非常的棒。下面我们就来简单的看一下如何使用NIO来操作文件。NIO对文件的理解与普通IO不同,它将文件抽象为一个通道,也就是FileCh

高味儿在这写写有点漏味的技术文章 749

java nio 实现的文件复制

[code="java"]package cn.com.nio; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class CopyFile { ...

iteye_8868的博客 116

java 流读取double_java NIO代码演示三种流

packagecom.test;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.nio.ByteBuffer;impo...

weixin_42501631的博客 143

【java】源码详解java NIO(二)_文件读取、输入输出

java nio系列第二篇,阅读目标:了解通道和缓冲区概念。 概述 通道 和 缓冲区 是 NIO 中的核心对象,几乎在每一个 I/O 操作中都要使用它们。 通道是对原 I/O 包中的流的模拟。到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象。一个 Buffer 实质上是一个容器对象。发送给一个通道的所有对象都必须首先放到缓冲区中;同样地,从通道中读取的任何数据都要

745

Java NIO 实现文件复制

/* *int bytesRead=inChannel.read(buf); * 这句话是从文件流中读取一个buf内容,返回读取的大小, * 如果是读取到文件尾部的时候,返回的是-1 * * 注意FileChannel.write()是在while循环中调用的。 * 因为无法保证write()方法一次能向FileChannel写入多少字节, * 因此需要重复调用write()方法, ...

weixin_33862514的博客 92

java读取大文件(上G级的)

import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class LargeMappedFiles { static int length = 0x8FFFFFF; // 128 Mb publi...

只要相信,期待就会成真! 413

java io目录_Java -- 新IO -- 目录

20.1 Java 新IO简介20.2 缓冲区与Buffer例:演示缓冲区的操作流程Class : IntBufferDemo0120.2.2 深入缓冲区操作20.2.3 创建子缓冲区20.2.4 创建只读缓冲区20.2.5 创建直接缓冲区20.3 通道20.3.1 FileChannel例:使用输出通道输出内容Class : FileChannelDemo01packagelime.pri.li...

weixin_33983238的博客 141
上一篇: Java I/O流处理字节类和字符类及例子
下一篇: Java多线程实现简单生产者消费者模式
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值