NIO - FileChannel

智能车竞赛独轮组信标灯系统全解析:从硬件选型到实战调试 本文全面解析了智能车竞赛独轮组信标灯系统的核心原理与实战应用。从硬件架构(灯板、灯罩、控制器)的深度剖析,到红外信号(特别是40kHz调制信号)的接收与解码策略,再到车模的灭灯机构设计与路径规划,提供了从硬件选型到软件调试的全链路指南。文章重点分享了实战调试技巧与常见问题排查方法,旨在帮助参赛队伍深入理解系统,提升车模的识别精度与比赛表现。 阅读详情
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.Channel;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;

public class FileChannelMain {
	
	private static final Charset charset = Charset.forName("GBK");
	
	private static final int BUFFER_CAPACITY  = 1024;
	
	public static void main(String[] args) throws IOException, InterruptedException {
		final String srcfilePath = "D:/tomcat-6.0.26/logs/catalina.2012-04-30.log";
		readFile(srcfilePath);
		
		final String writeFilePath = "D:/test.txt";
		final String[] lines = new String[]{"line1xxssss", "中文测试", "!@#$%^&*()"}; 
		writeFile(writeFilePath, lines, Boolean.TRUE);
		readFile(writeFilePath);
		
		final String targetFilePath = "D:/test-copy.txt";
		copyFile1(srcfilePath, targetFilePath);
		copyFile2(srcfilePath, targetFilePath);
	}

	/**
	 *
	 * <br>------------------------------<br>
	 * @param srcfilePath
	 * @param targetPath
	 * @throws IOException 
	 */
	private static void copyFile2(String srcfilePath, String targetPath) throws IOException {
		File file = new File(targetPath);
		if (!file.getParentFile().exists()) {
			file.mkdirs();
		}
		FileInputStream fileInputStream = new FileInputStream(srcfilePath);
		FileOutputStream fileOutputStream = new FileOutputStream(file);
		FileChannel inChannel = fileInputStream.getChannel();
		FileChannel outChannel = fileOutputStream.getChannel();
		//两者等价
//		inChannel.transferTo(0, inChannel.size(), outChannel);
		outChannel.transferFrom(inChannel, 0, inChannel.size());
		
		close(fileOutputStream);
		close(fileInputStream);
		close(inChannel);
		close(outChannel);
	}

	/**
	 *
	 * <br>------------------------------<br>
	 * @param srcfilePath
	 * @param targetPath
	 * @throws IOException 
	 */
	private static void copyFile1(String srcfilePath, String targetPath) throws IOException {
		File file = new File(targetPath);
		if (!file.getParentFile().exists()) {
			file.mkdirs();
		}
		FileInputStream fileInputStream = new FileInputStream(srcfilePath);
		FileOutputStream fileOutputStream = new FileOutputStream(file);
		FileChannel inChannel = fileInputStream.getChannel();
		FileChannel outChannel = fileOutputStream.getChannel();
		ByteBuffer inBuffer = ByteBuffer.allocate(BUFFER_CAPACITY);
		while (inChannel.read(inBuffer) != -1) {
			inBuffer.flip();
			outChannel.write(inBuffer);
			inBuffer.clear();
		}
		close(fileOutputStream);
		close(fileInputStream);
		close(inChannel);
		close(outChannel);
	}

	/**
	 * <br>------------------------------<br>
	 * @param writeFilePath
	 * @param lines
	 * @param append
	 * @throws IOException
	 */
	private static void writeFile(String writeFilePath, String[] lines, boolean append) throws IOException {
		File file = new File(writeFilePath);
		if (!file.getParentFile().exists()) {
			file.mkdirs();
		}
		FileOutputStream fileOutputStream = new FileOutputStream(file, append);
		FileChannel fileChannel = fileOutputStream.getChannel();
		ByteBuffer buffer = ByteBuffer.allocate(BUFFER_CAPACITY);
		for (String line : lines) {
			buffer.put(line.getBytes());
			buffer.put("\r\n".getBytes());
			buffer.flip();
			fileChannel.write(buffer);
			buffer.clear();
		}
		close(fileOutputStream);
		close(fileChannel);
	}
	
	/**
	 * <br>------------------------------<br>
	 * @param path
	 * @throws IOException
	 */
	private static void readFile(String path) throws IOException {
		if (isFileNotExists(path)) {
			throw new FileNotFoundException();
		}
		FileInputStream fileInputStream = new FileInputStream(path);
	 	FileChannel fileChanne = fileInputStream.getChannel();
	 	ByteBuffer buffer = ByteBuffer.allocate(BUFFER_CAPACITY);
	 	while (fileChanne.read(buffer) != -1) {
	 		buffer.flip();
	 		System.out.println(charset.decode(buffer));
	 		buffer.clear();
		}
	 	close(fileInputStream);
	 	close(fileChanne);
	}
	
	private static boolean isFileNotExists(String path) {
		File file = new File(path);
		return !file.exists();
	}
	
	/**
	 * 
	 * <br>------------------------------<br>
	 * @param outputStream
	 */
	private static void close(OutputStream outputStream) {
		if (outputStream == null) return;
		try {
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 
	 * <br>------------------------------<br>
	 * @param channel
	 */
	private static void close(Channel channel) {
		if (channel == null ) return;
		try {
			channel.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 
	 * <br>------------------------------<br>
	 * @param inputStream
	 */
	private static void close(InputStream inputStream) {
		if (inputStream == null) return;
		try {
			inputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
RK3588开发笔记-USB3.0接口调试 RK3588平台是一款强大的处理器,但要充分发挥其性能,需要正确调试其各种接口,包括USB 3.0接口。USB 3.0接口提供了更快的数据传输速度,但也可能面临一些问题。本篇博客将介绍如何在RK3588平台上调试USB 3.0接口,以确保其稳定性和性能。RK3588芯片具有强大的USB资源,包括多个USB接口和高速数据传输能力。RK3588通常具有多个USB接口,包括USB 2.0和USB 3.0。USB 2.0用于低速和全速设备连接,而USB 3.0则用于高速设备连接。 阅读详情

相关推荐

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 327

【NIO实战】深入理解FileChannel

FileChannel是对一个文件读,写,映射,操作的Channel。FileChannel是线程安全的,可以被多个线程并发使用。同一个进程中的多个FileChannel看到的同一个文件的视图是相同的,由于底层操作系统执行的缓存和网络文件系统协议引起的延迟,不同进程中在同一时间看到的文件视图可能会不同。

MarcoLin 1749

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 267

Java FileInputStream getChannel()方法与示例

FileInputStream类的getChannel()方法 (FileInputStream Class getChannel() method) getChannel() method is available in java.io package. getChannel()方法在java.io包中可用。 getChannel() method is used to return th...

cumt30111的博客 2587

SAP-PM设备模块-PM主数据之功能位置

SAP-PM模块学习

TRUIXIANG的博客 5137

WSL Ubuntu20 通过1Panel配置SSH服务的完整避坑指南

本文详细介绍了在WSL Ubuntu20环境下通过1Panel配置SSH服务的完整指南,包括环境准备、SSH服务安装与基础配置、1Panel中的SSH管理技巧以及连接测试与故障排查。特别针对WSL特性提供了避坑建议,如IP动态变化处理、SSH服务初始化配置等关键步骤,帮助用户高效搭建稳定的SSH服务环境。

weixin_29239279的博客 414

java io file channel_FileChannel getChannel()

FileChannel getChannel()描述 (Description)java.io.FileInputStream.getChannel()返回与此文件输入流关联的唯一FileChannel对象。 返回通道的位置到目前为止从文件读取的字节数。声明 (Declaration)以下是java.io.FileInputStream.getChannel()方法的声明 -public Fil...

weixin_35725410的博客 378

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4407

Java之FileChannel类的理解和使用

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来

不吃_花椒的博客 1600

【云原生技术】helm中Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用

Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用 在一个标准的 Helm Chart 中,通常会包含以下关键文件: - **Chart.yaml** - **values.yaml** - **templates/`_helpers.tpl`** - 以及若干模板文件(`deployment.yaml`、`service.yaml` 等) 下面分别介绍这几个文件的作用、常见字段及其含义。

weixin_46453070的博客 752

【教程4>第5章>第19节】基于Gardner环的位同步系统MATLAB仿真与带时偏基带数据导出

由于在FPGA中,时偏的影响主要是由系统收发两端晶振的不同步带来的,所以在仿真测试阶段,很难直接通过FPGA来模拟这个因素,所以我们采用MATLAB模拟带时偏的基带输入信号,并将其导出,由FPGA调用作为测试信号源。可以看到,同步之后(图3)相对于带时偏的基带信号(图2),其更接近标准的数据(图1),且抖动较小。订阅过的朋友可以复习下这个课程,没有订阅的朋友,也可以直接复制如下的程序进行仿真测试。上述程序中,加入时偏的基带信号,通过子函数。同步之后,可以恢复出标准的QPSK星座图。

FPGA/MATLAB学习教程/源码/项目合作开发 520

一些常用的流

FileInputStream 构造方法 FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。  FileInputStream(FileDescriptor fdObj) 创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的

tomorrow_fine的博客 952

数据分享:中国历年省、市、县行政区划shp(1949~2023年共计75年)

中华人民共和国县级以上行政区沿革》(三册,1949-1983年)“The Atlas of Changes of Administrative Regions of China”;《中华人民共和国行政区划沿革地图集》The yearly publications of “The Administrative Regions”, 1985-2014;每年的出版行政区划简册(1985-2014年)行政区划网:www.xzqh.org。行政区划网:www.xzqh.org。

J_Giser的博客 3691

Java NIO FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc

u010395804的专栏 622

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java的NIO之FileChannel

FileChannel文件通道Java的NIO中的FileChannel是一个连接到文件的通道,文件可以通过这个通道来进行读写操作。值得注意的是:FileChannel无法设置成非阻塞模式,它总是工作在阻塞模式下。下面介绍一下FileChannel的用法:7.1 打开一个FileChannel在使用FileChannel之前我们必须先打开一个FileChannel;但是我们无法直接打开一个FileC

惜暮 1505

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

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

java NIO 之 FileChannel

java NIO 之 FileChannel     Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。   FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。       打开FileChannel   在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使...

yjc0403的博客 148

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

21.NIO中FileChannel的使用

FileChannel的使用 Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 一.打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或R...

CC的博客 833

NIO与Socket笔记 :FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来...

张伯毅的专栏 1791

NIO07——FileChannel

 FileChannel 是一个连接到文件的通道,使用 FileChannel 可以从文件读数据,也可以向文件中写入数据。Java NIO 的 FileChannel 是标准 Java IO 读写文件的替代方案。  FileChannel 不能设置为非阻塞的模式,也就是说 FileChannel 总是阻塞的。  1、开启 FileChannel  在使用 FileChannel 之前必须先开启。但...

如不來的博客 627

Java NIO之FileChannel 详解

Java NIO之FileChannel 详解

1176

NIO学习之NIO概述和FileChannel详解

NIO学习之NIO概述和FileChannel详解入门概述阻塞 IO非阻塞 IO(NIO)NIO 概述ChannelBufferSelector通道和缓冲区Java NIO(Channel)Channel 概述channel 接口源码Channel 实现FileChannel 介绍和示例从 FileChannel 读数据FileChannel 操作详解打开 FileChannel从 FileChannel 读取数据向 FileChannel 写数据关闭 FileChannelFileChannel 的 po

m0_53157173的博客 1027

NIO之FileChannel介绍

FileChannel 可以通过的对象中的方法来获取,也可以通过静态方法来打开。FileChannel.open()的方式通过静态静态方法 FileChannel.open() 打开的通道可以指定打开模式,模式通过 StandardOpenOption 枚举类型指定。示例Paths.get("data","test","c.txt"), // 路径:data/test/c.txtpath获取:将传入的参数根据顺序进行统一拼接成为一个完整文件路径;:传入一个路径参数;

smart_an的专栏 1039

Java NIO详解(一): FileChannel

概述FileChannel是用来读,写,映射, 操作文件的channel(概念参见我的另一篇Java NIO概述). A channel for reading, writing, mapping, and manipulating a file. 获取FileChannel对象有三种方式:FileInputStream.getChannel(); FileOutputStream.getCh

sichenglain的专栏 2413

【死磕 NIO】— 深入分析Channel和FileChannel

大家好,我是大明哥,这次我们来看看NIO的第二个组件:Channel。 上篇文章[【死磕 NIO】— 深入分析Buffer]介绍了 NIO 中的 Buffer,Buffer 我们可以认为他是装载数据的容器,有了容器,还需要传输数据的通道才能完成数据的传输,这个通道就是今天要介绍的 Channel。 Channel 我们可以认为它是本地 I/O 设备、网络 I/O 的通信桥梁,只有搭建了这座桥梁,数据才能被写入 Buffer 。 Channel 在 NIO 中,Channel 和 Buffer 是相辅相成的

chenssy 的技术博客 2731

【NIO】FileChannel

前言 Github:https://github.com/yihonglei/java-all Project:java-nio Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 一 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法...

yhl_jxy的博客 5509
上一篇: Eclipse3.7 Indigo 字体设置为Courier New
下一篇: NIO - Buffer缓冲区
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值