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 ...
随机推荐
- 手把手教你Chrome浏览器安装Postman(含下载云盘链接)【转载】
转载自:http://www.ljwit.com/archives/php/278.html 说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.本文主要 ...
- 一篇入门 — Gatling 性能测试手册
介绍 本篇博客,旨在记录学习的要点,所以格式随意, 方便本人日后自考和回忆,有兴趣的朋友可以评论讨论. 原文地址:https://www.cnblogs.com/clockq/p/10539974.h ...
- Tomcat 的 server.xml 文件详解
文件内容解读 <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apac ...
- 微信小程序信息展示列表
微信小程序信息展示列表 效果展示: 代码展示: wxml <view class="head"> <view class="head_item" ...
- MySQL 报错ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'
MySQL 我们在创建用户的时候,可能会遇到以下报错: ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user' 说明mysq.user ...
- 算法:时间复杂度+二分查找法(Java/Go/Python)实现
导读 曾几何时学好数据结构与算法是我们从事计算机相关工作的基本前提,然而现在很多程序员从事的工作都是在用高级程序设计语言(如Java)开发业务代码,久而久之,对于数据结构和算法就变得有些陌生了,由于长 ...
- python 2解决编码问题
import sys reload(sys) sys.setdefaultencoding('utf-8') 另:python 3的open函数可以直接加encoding参数
- sql server 高可用故障转移(5)
测试故障转移群集报告 在SQL-CL01(hsr 50)进行故障转移群集的创建,如图下图所示,在SQL-CL01和SQL-CL02的“服务器管理”中右键点击“功能”,选择“添加功能 勾选故障转移群集 ...
- Android--UI之Button
前言 最近一直在讲androidUI控件的使用方式,这篇博客讲解一下基本上属于用处最广泛的控件之一的Button控件.如果有过其他平台开发经验的程序员,对按钮是不会陌生的.本篇博客首先讲解一下Andr ...
- JavaEE 要懂的小事:二、图解 Cookie(小甜饼)
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...