Day1 Java读取二进制文件
任务:练习Java读取二进制文件,读取文件的前64和最后64个字节。
推荐一个十六进制在线编辑器:HexEd.it - Browser-based Online and Offline Hex Ed...https://hexed.it/ 可用来核对自己输出的与文件内容是否一致。
FileWriter只能接受字符串形式的参数,也就是说只能把内容存到文本文件。相对于文本文
件,采用二进制格式的文件存储更省空间
InputStream
InputStream用于按字节从输入流读取数据。其中的int read()方法读取一个字节,这个字节
以整数形式返回0到255之间的一个值。为什么读一个字节,而不直接返回一个byte类型的值?
因为byte类型最高位是符号位,它所能表示的最大的正整数是127。
InputStream只是一个抽象类,不能实例化。FilelnputStream是InputStream的子类,用于从
文件中按字节读取。
read方法
read方法一共有三种重载方式
int read()
int read(byte b[])
int read(byte b[], int off, int len)
这三种重载方式都符合一下两条结论:
read方法每读一次就会使文件指针向后移动一个字节或者N个字节(N=读取到的数组字节数<=指定的字节数组长度)
如果文件指针到文件末尾,就返回-1,否者返回读取字节的长度
RandomAccessFile
RandomAccessFile实现了大部分文件输入输出流的方法,但是底层实现中他实现的是DataInput和DataOutput接口,并非是FileInputStream和FileOutputStream。RandomAccessFile使用很多native方法实现了对文件的操作,并且很多native方法跟inputstream都有重叠,比如read0方法。
r:以只读的模式打开,如果调用write方法将会抛出IO异常
rw:以读和写的模式打开
rws:以读和写的模式打开,要求对”文件的内容“和”元数据“的每个更新都同步到存储设备
rwd:以读和写的模式打开,要求对”文件的内容“的每个更新都同步到存储设备
long getFilePointer() //返回文件记录中指针的当前位置
void seek(long pos) //将文件记录移动到指定的pos文件
实现代码:
import java.io.*;public class day2 {public static void main(String[] args) throws IOException{String filePath = "src/picture/day1.png";File file = new File (filePath);file.setReadable(true);System.out.println(file.canRead());RandomAccessFile fis = null;try {fis =new RandomAccessFile(filePath,"rw");//用字节数组,减少了内存和硬盘的交互,提高了运行效率,一次最多读取bytes.length个字节byte[] bytes = new byte[64];fis.read(bytes);print(bytes);fis.seek(file.length()-64);//将文件指针定位到末尾fis.read(bytes);print(bytes);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(fis !=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}public static void print(byte[] bytes){for (int i = 0; i < bytes.length; i++) {System.out.printf("%02X ",bytes[i]);if((i+1)%8==0) System.out.print("\n");}System.out.println("-----------------");}}
遇到的问题
问题:一直读取不到文件。
解决:直接复制文件的路径,不要手打。(玄学问题)
Day1 Java读取二进制文件相关推荐
- java读二进制bin文件内容_利用Java读取二进制文件示例详细解说
前言 此文主要给大伙介绍了关于Java读取二进制文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 读Hex写CSV data目录下有little-endian bin文 ...
- java读取二进制文件数据
java读取二进制文件数据 1.读取文件信息 java提供多种读取方式: /*** 按字节读取文件数据* @param fileName 文件路径包括文件名*/public static void r ...
- char 转换 二进制 java_使用Java读取二进制文件并将其转换为char文件 - java
我正在尝试读取可以在here中找到的shortcod文件二进制文件. 我用来打印此文件内容的方法: public void read3RegularGraphs( String pathFile ) ...
- java 读取二进制文件_用Java读取二进制文件
我有一个相对较长的无符号整数文件(每个64位,0.47GB文件),我需要读取并存储在一个数组中.经过一段时间的脑力劳动后,我终于使用了这种类型,因为Java中的所有内容都已签名(请纠正我,如果我错了, ...
- java怎么读取二进制_Java如何实现读取二进制文件
Java如何实现读取二进制文件 发布时间:2020-11-10 16:19:46 来源:亿速云 阅读:83 作者:Leah 这篇文章运用简单易懂的例子给大家介绍Java如何实现读取二进制文件,内容非常 ...
- JAVA之读取二进制文件
0 引言 最近老师让写一个程序,作为学习JAVA的练习.目的在于:将一个二进制文件中的数据读取出来,其中数据包括点的位置信息和压力值及状态.将这些数据画作图像的形式展示. 本小程序分为以下几部分: ( ...
- java读取安卓本地文件_Java Android 二进制文件读写
1.读取android工程中本地二进制文件 Android studio工程目录中有二进制文件abcd.raw . 二进制文件所放目录 app/src/main/assets/abcd.raw 1.1 ...
- java 遍历二进制_读取二进制文件并循环遍历每个字节
在Python中读取二进制文件并循环遍历每个字节 Python 3.5中的新功能是 pathlib 模块,它有一个特别方便的方法来读取文件中的字节,允许我们迭代字节 . 我认为这是一个体面的(如果快速 ...
- java 读取css文件_java文件读取的两种方式
JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...
最新文章
- 共享思维导图,协作型思维导图Leangoo
- 程序员百万年薪进阶指南(一)
- 深度!移动机器人(AGV)产业链全分析
- 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器
- C/C++指针函数和函数指针
- mfc+mysql+创建表单_一个完整的c++ web框架(webserver + orm)
- Hibernate Session和Jpa EntityManager
- [转载] python 一个简单的天气预报程序
- 如何生成一个QRCode(二维码)
- 库存转换是什么意思_安全库存的设置:库存计划的看家本领
- Mac上使用Chrome浏览器截取长图
- 恢复数据的原理和方法
- jQuery图片播放插件ColorBox使用方法
- WorldView卫星遥感影像数据/米级分辨率遥感影像
- element步骤条实战
- 我是如何用最简单的前端技术揭示那些灰色产业背后的原理
- 中国移动H1S-3光猫首发破解路由器桥接教程
- 关于EJB,为什么用EJB?为什么不用EJB?
- 区分阿里云系统盘和数据盘
- 推推客,拼多多优惠卷带你0投资月入过万
热门文章
- linux 触摸屏驱动中断下半部实现-工作队列
- android腾讯x5播放器,腾讯x5内核浏览器WebView调起微信支付,以及实现x5内核视频播放...
- excel工具栏隐藏了怎么办_Office2016基础教程第一章:认识Excel #excel #职场 #办公技巧...
- 先序遍历的顺序建立二叉链表
- html实现颜料效果,JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
- python:编解码器基类之无状态的编码和解码
- SQLSever期末考试作业复习卷一
- 美食家(1)- 传统川味糖醋排骨制作方法
- java从入门到精通----Spring
- 自动控制原理4.2---根轨迹绘制的基本法则