Java基础IO流(二)字节流小案例
JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html
①读取指定文件内容,按照16进制输出到控制台
其中,Integer.toHexString(int i);是将整数i转换成16进制字符串
- /**
- * 读取指定文件内容,按照16进制输出到控制台
- * 并且每输出10个byte换行
- * @param fileName
- */
- public static void printHex(String fileName) throws IOException{
- InputStream is = new FileInputStream(fileName);
- int len,count=1;
- while((len=is.read()) != -1){
- //单位数前面补零
- if (len <= 0xf) {
- System.out.print("0");
- }
- System.out.print(Integer.toHexString(len) + " ");
- if (count++%10 == 0) {
- System.out.println();
- }
- }
in.close();- }
②读取指定文件内容到字节数组中,并且按照16进制输出到控制台
两种方式:第一种是读取到一个字节数组中,第二种是读取到多个字节数组中
注意:第二种方式中,位与 0xff的原因是:byte类型8位,int类型32位,为了避免数据转换错误,通过&0xff将高24位清零。
- /**
- * 读取指定文件内容到字节数组中,并且按照16进制输出到控制台
- */
- public static void printHexByByteArray(String fileName) throws IOException{
- InputStream is = new FileInputStream(fileName);
- byte[] buf = new byte[20 * 1024];
- /*
- * 从in中批量读取字节,放入到buf这个字节数组中
- * 从第0个位置开始放,最多放buf.length个
- * 返回的是读到的字节的个数
- */
- int bytes = is.read(buf,0,buf.length);//一次性读完,说明字节数组足够大
- int count = 1;
- for (int i = 0; i < bytes; i++) {
- if (buf[i] <= 0xf) {
- System.out.print("0");
- }
- System.out.print(Integer.toHexString(buf[i]) + " ");
- if (count++ % 10 == 0) {
- System.out.println();
- }
- }
- }
- /**
- * 读取指定文件内容到字节数组中,并且按照16进制输出到控制台
- */
- public static void printHexByByteArray1(String fileName) throws IOException{
- InputStream is = new FileInputStream(fileName);
- byte[] buf = new byte[20 * 1024];
- int bytes = 0;
- int count = 1;
- while((bytes = is.read(buf, 0, buf.length)) != -1){
- for (int i = 0; i < bytes; i++) {
- System.out.print(Integer.toHexString(buf[i] & 0xff) + " ");
- if (count++ % 10 == 0) {
- System.out.println();
- }
- }
- }
- }
③拷贝文件
- /**
- * 文件拷贝
- */
- public static void copyFile(File srcFile,File destFile) throws IOException{
- if (!srcFile.exists()) {
- throw new IllegalArgumentException("文件:" + srcFile + "不存在");
- }
- InputStream in = new FileInputStream(srcFile);
- OutputStream out = new FileOutputStream(destFile);
- byte[] buf = new byte[8 * 1024];
- int b;
- while((b = in.read(buf, 0, buf.length)) != -1){
- out.write(buf, 0, b);
- out.flush(); //最好加上
- }
- in.close();
- out.close();
- }
④DataOutputStream的运用
(转)DataInput out Stream
- /**
- * DataOutputStreamTest
- */
- public static void demo(String fileName) throws IOException{
- DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName));
- dos.writeInt(10);
- dos.writeInt(-10);
- dos.writeLong(10l);
- dos.writeDouble(10.5);
- //采用UTF-8编码写出
- dos.writeUTF("中国");
- //采用utf-16be编码写出
- dos.writeChars("中国");
- dos.close();
- }
Java基础IO流(二)字节流小案例的更多相关文章
- 十九、Java基础--------IO流之字节流
在上一篇文章中介绍了IO体系以及一些基本概念和字符流的相关应用,本文着重介绍字节流的相关操作. 字节流 它的操作与字符流类似,可以参与字符流的定义.读取.写入.处理异常的格式,只不过是处理的数据不同, ...
- Java基础-IO流对象之字节流(Stream)
Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
- Java基础-IO流对象之打印流(PrintStream与PrintWriter)
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
- Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
- Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)
Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...
- Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)
Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...
- Java基础-IO流对象之File类
Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
- 《Java基础——IO流》
Java基础--IO流 一.字节流: 1.输入流 (InputStream) 规则: 此处用于读取txt文件中的内容. 代码: import java.io.*; public c ...
随机推荐
- 【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我们介绍了网关使用Redis进行缓存,并介绍了如何进行缓存实现,缓存信息清理接口的使用.本篇我们将介绍如何实现网关自定义客户端授权, ...
- 包建强的培训课程(10):Android插件化从入门到精通
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Javascript高级编程学习笔记(65)—— 事件(9)复合事件
复合事件 复合事件是 DOM3 中新增的一类事件,用于处理 IME 的输入序列 IME(输入法编辑器)通常用于输入物理键盘上找不到的字符,而这种输入方式通常需要同时按住多个键,但最终只输入一个字符 复 ...
- Javascript高级编程学习笔记(28)—— BOM(2)window对象2
今天讲一下window对象和浏览器导航,弹窗等有关的内容 导航和打开窗口 window.open() 用于导航到某个特定 url 该方法接收四个参数 1.url 2.窗口目标(当页面中有多个框架fra ...
- 使用 VS Code 开发和调试 .NET Core 程序
电脑不想装几十个G的 VS2017,那就用 VS Code 吧 目标: 创建一个类库项目 Skany.Core,并用 Nuget 引用第三方组件 Hash 实现加密算法 创建一个单元测试项目 Skan ...
- C#连接mysql数据库的一个例子和获取本机IP的方法
本例子是一个最初级直接连接mysql数据库的例子,实现了往数据库插入数据的操作: string MyConnectionMysql="Server=localhost;Datbase=xxx ...
- sql中base64解码、译码
1.5.6版本及之后的版本的base64 主要就是两个MySQL内部函数to_base64和from_base64,使用也很简单,如下: 1)先查看MySQL的版本:mysql> select ...
- python之连接oracle模块(cx_Oracle)
cx_Oracle模块下载地址如下: https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads 安装好之后就可以使用了,具体使用如下 #!/usr/ ...
- freemarker变量自加
[#assign i = 0][#list dateList as item][#assign i = i + 1]<li><input type="radio" ...
- CentOS7.0小随笔——指令基本操作(Part.A)
与其说是CentOS7.0的小随笔,说老实话,基本指令在每个发行版本的Linux中都基本上是一致的. Part.A部分我们讲述以下四个方面:命令行界面与图形界面.Linux系统的关闭与重启.命令行帮助 ...