任务:练习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读取二进制文件相关推荐

  1. java读二进制bin文件内容_利用Java读取二进制文件示例详细解说

    前言 此文主要给大伙介绍了关于Java读取二进制文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 读Hex写CSV data目录下有little-endian bin文 ...

  2. java读取二进制文件数据

    java读取二进制文件数据 1.读取文件信息 java提供多种读取方式: /*** 按字节读取文件数据* @param fileName 文件路径包括文件名*/public static void r ...

  3. char 转换 二进制 java_使用Java读取二进制文件并将其转换为char文件 - java

    我正在尝试读取可以在here中找到的shortcod文件二进制文件. 我用来打印此文件内容的方法: public void read3RegularGraphs( String pathFile ) ...

  4. java 读取二进制文件_用Java读取二进制文件

    我有一个相对较长的无符号整数文件(每个64位,0.47GB文件),我需要读取并存储在一个数组中.经过一段时间的脑力劳动后,我终于使用了这种类型,因为Java中的所有内容都已签名(请纠正我,如果我错了, ...

  5. java怎么读取二进制_Java如何实现读取二进制文件

    Java如何实现读取二进制文件 发布时间:2020-11-10 16:19:46 来源:亿速云 阅读:83 作者:Leah 这篇文章运用简单易懂的例子给大家介绍Java如何实现读取二进制文件,内容非常 ...

  6. JAVA之读取二进制文件

    0 引言 最近老师让写一个程序,作为学习JAVA的练习.目的在于:将一个二进制文件中的数据读取出来,其中数据包括点的位置信息和压力值及状态.将这些数据画作图像的形式展示. 本小程序分为以下几部分: ( ...

  7. java读取安卓本地文件_Java Android 二进制文件读写

    1.读取android工程中本地二进制文件 Android studio工程目录中有二进制文件abcd.raw . 二进制文件所放目录 app/src/main/assets/abcd.raw 1.1 ...

  8. java 遍历二进制_读取二进制文件并循环遍历每个字节

    在Python中读取二进制文件并循环遍历每个字节 Python 3.5中的新功能是 pathlib 模块,它有一个特别方便的方法来读取文件中的字节,允许我们迭代字节 . 我认为这是一个体面的(如果快速 ...

  9. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

最新文章

  1. 共享思维导图,协作型思维导图Leangoo
  2. 程序员百万年薪进阶指南(一)
  3. 深度!移动机器人(AGV)产业链全分析
  4. 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器
  5. C/C++指针函数和函数指针
  6. mfc+mysql+创建表单_一个完整的c++ web框架(webserver + orm)
  7. Hibernate Session和Jpa EntityManager
  8. [转载] python 一个简单的天气预报程序
  9. 如何生成一个QRCode(二维码)
  10. 库存转换是什么意思_安全库存的设置:库存计划的看家本领
  11. Mac上使用Chrome浏览器截取长图
  12. 恢复数据的原理和方法
  13. jQuery图片播放插件ColorBox使用方法
  14. WorldView卫星遥感影像数据/米级分辨率遥感影像
  15. element步骤条实战
  16. 我是如何用最简单的前端技术揭示那些灰色产业背后的原理
  17. 中国移动H1S-3光猫首发破解路由器桥接教程
  18. 关于EJB,为什么用EJB?为什么不用EJB?
  19. 区分阿里云系统盘和数据盘
  20. 推推客,拼多多优惠卷带你0投资月入过万

热门文章

  1. linux 触摸屏驱动中断下半部实现-工作队列
  2. android腾讯x5播放器,腾讯x5内核浏览器WebView调起微信支付,以及实现x5内核视频播放...
  3. excel工具栏隐藏了怎么办_Office2016基础教程第一章:认识Excel #excel #职场 #办公技巧...
  4. 先序遍历的顺序建立二叉链表
  5. html实现颜料效果,JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
  6. python:编解码器基类之无状态的编码和解码
  7. SQLSever期末考试作业复习卷一
  8. 美食家(1)- 传统川味糖醋排骨制作方法
  9. java从入门到精通----Spring
  10. 自动控制原理4.2---根轨迹绘制的基本法则