前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如果使用FileChannel.transferTo等方法获取的数据看似比传入的长度短时

如果使用FileChannel.transferTo等方法获取的数据看似比传入的长度短时

作者头像
johnhuster的分享
发布2022-03-28 20:30:27
发布2022-03-28 20:30:27
61500
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

首先看下这个方法的定义:

代码语言:javascript
代码运行次数:0
运行
复制
public abstract long transferTo(long position, long count,
                                WritableByteChannel target)
    throws IOException

该方法可以将一个输入性FileChannel的数据传输到一个WritableByteChannel去,如果你打开WritableByteChannel文件发现可见数据比你传入的长度小时可以考虑下文件是不是有BOM标识符,BOM是用于标识该文件是大小端的标识符,因为BOM是存在文件头的一种不可见字符,所以你拷贝的数据很有可能包含了这几个标识符(比如你从0开始传递数据,文件中又有BOM标识符),但不一定是每个文件都有。如果是程序导出的utf-8编码文件是不会有这种标识符的,但是人为操作要读取的文件之后有可能会引入BOM标识符,如下图所示:

前面的EF BB BF就是UTF-8 BOM编码格式文件中三个BOM标识字符。

PS:

需要注意的是首先你要看下是不是读取的文件根本就没有那么多可视字符,比如只有1个字符,你愣是要读取10个字符,那么肯定不会如愿以偿的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档