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();
}
}
}
相关推荐
射频接收机本振相噪指标计算:从倒易混频到GSM实战
在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演
【NIO实战】深入理解FileChannel
FileChannel是对一个文件读,写,映射,操作的Channel。FileChannel是线程安全的,可以被多个线程并发使用。同一个进程中的多个FileChannel看到的同一个文件的视图是相同的,由于底层操作系统执行的缓存和网络文件系统协议引起的延迟,不同进程中在同一时间看到的文件视图可能会不同。
【UE5】多用户协同编辑实战:从配置到实时协作
本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。
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...
SAP-PM设备模块-PM主数据之功能位置
SAP-PM模块学习
WSL Ubuntu20 通过1Panel配置SSH服务的完整避坑指南
本文详细介绍了在WSL Ubuntu20环境下通过1Panel配置SSH服务的完整指南,包括环境准备、SSH服务安装与基础配置、1Panel中的SSH管理技巧以及连接测试与故障排查。特别针对WSL特性提供了避坑建议,如IP动态变化处理、SSH服务初始化配置等关键步骤,帮助用户高效搭建稳定的SSH服务环境。
java io file channel_FileChannel getChannel()
FileChannel getChannel()描述 (Description)java.io.FileInputStream.getChannel()返回与此文件输入流关联的唯一FileChannel对象。 返回通道的位置到目前为止从文件读取的字节数。声明 (Declaration)以下是java.io.FileInputStream.getChannel()方法的声明 -public Fil...
【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论
矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...
Java之FileChannel类的理解和使用
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来
【云原生技术】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` 等) 下面分别介绍这几个文件的作用、常见字段及其含义。
【教程4>第5章>第19节】基于Gardner环的位同步系统MATLAB仿真与带时偏基带数据导出
由于在FPGA中,时偏的影响主要是由系统收发两端晶振的不同步带来的,所以在仿真测试阶段,很难直接通过FPGA来模拟这个因素,所以我们采用MATLAB模拟带时偏的基带输入信号,并将其导出,由FPGA调用作为测试信号源。可以看到,同步之后(图3)相对于带时偏的基带信号(图2),其更接近标准的数据(图1),且抖动较小。订阅过的朋友可以复习下这个课程,没有订阅的朋友,也可以直接复制如下的程序进行仿真测试。上述程序中,加入时偏的基带信号,通过子函数。同步之后,可以恢复出标准的QPSK星座图。
一些常用的流
FileInputStream 构造方法 FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 FileInputStream(FileDescriptor fdObj) 创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的
数据分享:中国历年省、市、县行政区划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。
Java NIO FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.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
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
java NIO 之 FileChannel
java NIO 之 FileChannel Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使...
最新的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...
NIO与Socket笔记 :FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来...
NIO07——FileChannel
FileChannel 是一个连接到文件的通道,使用 FileChannel 可以从文件读数据,也可以向文件中写入数据。Java NIO 的 FileChannel 是标准 Java IO 读写文件的替代方案。 FileChannel 不能设置为非阻塞的模式,也就是说 FileChannel 总是阻塞的。 1、开启 FileChannel 在使用 FileChannel 之前必须先开启。但...
Java NIO之FileChannel 详解
Java NIO之FileChannel 详解
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
NIO之FileChannel介绍
FileChannel 可以通过的对象中的方法来获取,也可以通过静态方法来打开。FileChannel.open()的方式通过静态静态方法 FileChannel.open() 打开的通道可以指定打开模式,模式通过 StandardOpenOption 枚举类型指定。示例Paths.get("data","test","c.txt"), // 路径:data/test/c.txtpath获取:将传入的参数根据顺序进行统一拼接成为一个完整文件路径;:传入一个路径参数;
Java NIO详解(一): FileChannel
概述FileChannel是用来读,写,映射, 操作文件的channel(概念参见我的另一篇Java NIO概述). A channel for reading, writing, mapping, and manipulating a file. 获取FileChannel对象有三种方式:FileInputStream.getChannel(); FileOutputStream.getCh
【死磕 NIO】— 深入分析Channel和FileChannel
大家好,我是大明哥,这次我们来看看NIO的第二个组件:Channel。 上篇文章[【死磕 NIO】— 深入分析Buffer]介绍了 NIO 中的 Buffer,Buffer 我们可以认为他是装载数据的容器,有了容器,还需要传输数据的通道才能完成数据的传输,这个通道就是今天要介绍的 Channel。 Channel 我们可以认为它是本地 I/O 设备、网络 I/O 的通信桥梁,只有搭建了这座桥梁,数据才能被写入 Buffer 。 Channel 在 NIO 中,Channel 和 Buffer 是相辅相成的
【NIO】FileChannel
前言 Github:https://github.com/yihonglei/java-all Project:java-nio Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 一 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法...
327



被折叠的 条评论
为什么被折叠?



