Channel是什么?FileChannel类的常用方法
Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下:
• Channel可以异步地执行I/O读写操作。
• Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。
• Channel可以直接将指定文件的部分或者全部直接映射成 Buffer。
• Channel只能与Buffer进行交互,程序不能直接读写Channel中的数据。
要使用 Channel,就需要使用它的实现类。在 java.nio.channels 包中,提供了很多Channel接口的实现类,包括 DatagramChannel、FileChannel、Pipe.SinkChannel、Pipe.SourceChannel,ServerSocketChannel,SocketChannel等。其中 DatagramChannel用于支持UDP网络通信,FileChannel 用于从文件中读写数据,Pipe.SinkChannel和 PipeSourceChannel用于支持线程之间的通信,ServerSocketChannel和SocketChannel用于支持TCP网络通信。这里将主要讲解 FileChannel的使用。
Channel对象并不是通过构造方法来创建的,而是通过传统I/O的getChannel()方法来获取对应的Channel。不同的流所获取的 Channel 是不同的,例如 FleInputStream和FileOutputStream获取的是 FileChannel,同时还可以使用RandomAccessFile 获取该对象而 PipedInputStream 和 PipedOutputStream 所获得的是 Pipe. SinkChannel 和 PipeSourceChannel。
FileChannel类可以实现常用的读写操作,在类中提供了很多专门用于操作文件的方注 其常用方法如表所示。

了解了FileChannel类的常用方法及其功能后,下面通过一个文件拷贝的案例,来演示FileChannel的使用,如下所示。
import java .1 o.*;
importjava.nio.channels.*;
public class Example19 {public static void main(String[] args) throws Exception {//创建RandomAccessFile对象,指定源文件RandomAccessFile infile = new RandomAccessFile("source/src.jpg", "rw")//获取读取源文件 Filehannel 通道FileChannel inChannel = infile.getChannel();//创建RandomAccessFile对象,指定目标文件RandomAccessFile outfile = new RandomAccessFile("target/dest.jpg", "rw");//获取复制目标文件 Filechannel通道FileChanneloutChannel = outfile.getChannel();//使用transferTo(方法进行整体复制long transferTo = inChannel.transferTo(0, inChannel.size() outChannel);if (transferTo > 0) {System.out.printIn("复制成功!");}//关闭资源infile.close();inChannel.close();outfile.close();outChannel.close();}
}
相关文章:
Channel是什么?FileChannel类的常用方法
Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下: • Channel可以异步地执行I/O读写操作。 • Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。 • Channel…...
Python爬虫——scrapy_读书网数据入库和链接跟进
数据入库 先创建一个数据库 create table book(id int primary key auto_increment,name varchar(128),src varchar(128));settings.py DB_HOST 169.254.38.183 # 端口号是一个整数 DB_PORT 3306 DB_USER root DB_PASSWORD 123456 # 数据库名称 DB_NAME spider01 DB_CHA…...
前端常用linux命令
前端开发也需要掌握一些常用的linux命令,以便在linux系统上做一些操作如nginx代理配置,项目解压发布等 1、cd 切换目录 cd / //切换到根目录 cd directory_path //切换到directory_path目录 cd ../ //切换到上一级目录2、ls 列出目录内容 ls3…...
制作高质量SVG的最佳工具,这些编辑软件你需要知道!
作为前端开发者,想要学习更高级的可视化技术,SVG 编辑工具是必学的。与其他图像格式相比,SVG 图像可任意缩放而不损失质量,还可以实现交互动画效果,一个好的 SVG 编辑器能大大简化你的学习过程。下面就跟随小编一起看看…...
四、MySQL性能优化
1、SQL性能优化 1、如何分析SQL的性能? 我们可以使用EXPLAIN命令来分析SQL的执行计划 ,执行计划是指一条SQL语句在经过MySQL查询优化器的选择后具体的执行方式 EXPLAIN并不会真的去执行相关的语句,而是通过查询优化器 对语句进行分析&…...
Oracle Database12c数据库官网下载和安装教程
文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功,然后我们解压即可 安装 双击 双击setup.exe 根据…...
spring依赖注入详解(下)
Autowired注解依赖注入过程 一、findAutowireCandidates()实现 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象把re…...
python的dataframe常用处理方法
import pandas as pdclass DataFrameProcessor:staticmethoddef sort_by_column(df, by_column, ascendingTrue):"""根据指定列对DataFrame进行排序。Parameters:df (pd.DataFrame): 要排序的DataFrame。by_column (str): 要排序的列名。ascending (bool): True…...
k8s 自身原理之高可用
说到高可用,咱们在使用主机环境的时候(非 k8s),咱做高可用有使用过这样的方式: 服务器做主备部署,当主节点和备节点同时存活的时候,只有主节点对外提供服务,备节点就等着主节点挂了…...
游乐场vr设备虚拟游乐园vr项目沉浸体验馆
在景区建设一个VR游乐场项目可以为游客提供一种新颖、刺激和沉浸式的游乐体验。提高游客的体验类型,以及景区的类目,从而可以吸引更多的人来体验。 1、市场调研:在决定建设VR游乐场项目之前,需要进行市场调研,了解当地…...
window10安装并使用oracle
1、现在oracle19c或者21c,下载链接如下 Database Software Downloads | Oracle 中国 2、安装好之后, 2.1PL/SQL连接方式 命令窗口输入sqlplus conn as sysdba 2.2DBeaver连接 输入IP、 端口默认1521 数据库默认是ORCL 用户名是system 角色是N…...
[Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel
下载地址:前往黑果魏叔官网 AutoCAD是一款计算机辅助设计(CAD)软件,目前已经成为全球最受欢迎的CAD软件之一。它可以在二维和三维空间中创建精确的技术绘图,并且可以应用于各种行业,如建筑、土木工程、机械…...
Oracle 主从库目录不一致(异路径)的n种处理方案及效果
最近遇到了复制数据(DUPLICATE TARGET DATABASE TO xxx)的时候 Oracle 源和目标库目录不一致的问题,比较初级但也踩到一些坑,整理记录一下。主从库搭建的时候注意事项其实也类似,而且更通用,所以标题写的是…...
创建型(一) - 简单工厂模式、工厂方法模式和抽象工厂模式
本文使用了王争老师设计模式课程中的例子,写的很清晰,而且中间穿插了代码优化。 由于设计模式就是解决问题的一种思路,所以每个设计模式会从问题出发,这样比较好理解设计模式出现的意义。 一、简单工厂模式 解决问题:…...
LeetCode3.无重复字符的最长子串
虽然是一道中等题,但我5分钟就写完了,而且是看完题就知道怎么写,这一看就知道双指针,一个左一个右,右指针往后移如果没有重复的长度1;如果有重复的,左指针往右移,那如何判断重复呢&a…...
鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏
鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏...
如何发布自己的小程序
小程序的基础内容组件 text: 文本支持长按选中的效果 <text selectable>151535313511</text> rich-text: 把HTML字符串渲染为对应的UI <rich-text nodes"<h1 stylecolor:red;>123</h1>"></rich-text> 小程序的…...
【微服务】spring 条件注解从使用到源码分析详解
目录 一、前言 二、spring 条件注解概述 2.1 条件注解Conditional介绍 2.2 Conditional扩展注解 2.2.1 Conditional扩展注解汇总 三、spring 条件注解案例演示 3.1 ConditionalOnBean 3.2 ConditionalOnMissingBean 3.2.1 使用在类上 3.2.2 使用场景补充 3.3 Condit…...
客户案例:高性能、大规模、高可靠的AIGC承载网络
客户是一家AIGC领域的公司,他们通过构建一套完整的内容生产系统,革新内容创作过程,让用户以更低成本完成内容创作。 客户网络需求汇总 RoCE的计算网络RoCE存储网络1.不少于600端口200G以太网接入端口,未来可扩容至至少1280端口1.…...
Flutter性能揭秘之RepaintBoundary
作者:xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新,那就只能重绘了。尽管如此,Flutter同样会重新绘制一些Widget,而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能,有时…...
用华为ENSP模拟器复现智慧小区网络:从VLAN划分到三层架构的保姆级配置教程
华为ENSP模拟器实战:智慧小区网络从零搭建全流程指南 当你第一次拿到智慧小区网络设计方案时,那些抽象的拓扑图和配置参数是否让你望而生畏?作为网络工程师成长路上的必经之路,企业级网络搭建从来不是纸上谈兵的游戏。本文将带你用…...
Graphviz自动排版太随机?教你5个技巧精准控制节点位置
Graphviz自动排版太随机?5个专业技巧精准控制节点位置 当你用Graphviz绘制关系图时,是否遇到过这样的困扰:明明代码逻辑清晰,生成的图表却总是不按预期排列?节点位置随机跳跃,关键元素错位,甚至…...
水墨江南模型软件测试实践:生成结果的稳定性与一致性验证
水墨江南模型软件测试实践:生成结果的稳定性与一致性验证 最近在项目里用上了水墨江南这个AI绘画模型,效果确实惊艳,那种烟雨朦胧、小桥流水的意境拿捏得很准。但问题也来了,当我们想把它集成到产品里,给用户稳定提供…...
Blaze表达式优化完全手册:提升计算性能的7个核心策略
Blaze表达式优化完全手册:提升计算性能的7个核心策略 【免费下载链接】blaze NumPy and Pandas interface to Big Data 项目地址: https://gitcode.com/gh_mirrors/bl/blaze Blaze作为NumPy和Pandas风格的大数据接口工具,能够帮助用户轻松处理各类…...
Ice:macOS菜单栏管理终极指南,彻底告别杂乱无章
Ice:macOS菜单栏管理终极指南,彻底告别杂乱无章 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 想要彻底掌控macOS菜单栏,告别杂乱无章的图标堆积吗?I…...
AI助力:让快马平台智能生成排列组合列举与计算一体化工具
最近在做一个数据分析项目时,遇到了需要批量计算排列组合的需求。传统的手动计算不仅效率低,还容易出错。于是我开始寻找更智能的解决方案,发现InsCode(快马)平台的AI辅助开发功能正好能帮我快速实现这个工具。 需求分析 排列组合在概率统计、…...
使用 HashMap 优化嵌套循环:Java 对象数组转换
本文旨在提供使用 HashMap 优化 Java 嵌套循环的有效方法,特别是当循环涉及对象数组并进行相等检查时。通过将内部循环转换为 HashMap 查询可以显著降低时间复杂性,提高代码性能。本文将提供详细的步骤和示例代码,以帮助读者理解和应用此优化…...
PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验
PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover PlayCover作为一款创新的开源工具,让Apple Silicon Mac用户能…...
Ollama平台部署GLM-4.7-Flash:从零开始搭建本地大模型服务
Ollama平台部署GLM-4.7-Flash:从零开始搭建本地大模型服务 1. 为什么选择GLM-4.7-Flash? 在众多开源大模型中,GLM-4.7-Flash以其独特的定位脱颖而出。这个30B参数的MoE(混合专家)模型,在性能与效率之间取…...
售前客户需求深度挖掘:从表面诉求到核心痛点的五步法
# 003、客户需求深度挖掘:从表面诉求到核心痛点的五步法---上周调一个嵌入式项目,客户说“设备偶尔会死机,重启就好”。我们查了三天的日志,发现是内存泄漏。但真正的问题是什么?是代码质量?不完全是。最后…...
