Java Io 流(输入输出流)
IO流,也就是输入和输出流,可分为字节流和字符流。
1. 字节流
(1). InputStream 输入流,用于读取文件
输入流常用API:
inputStream.read() 读取一个字节
inputStream.read(byte[] buffer) 读取数据填充字节数组
inputStream.read(byte[] buffer, int start, int size) 读取数据到字节数组buffer中,从buffer的start位置开始,到size长度的数据
(2). OutputStream 输出流, 用于写入文件
输出流常用API:
outputStream.write(int b) 写一个字节到流中
outputStream.write(byte[] buffer) 写一个字节的数据到流中
outputStream.write(byte[] buffer, int start, int size) 写字节数据buffer从start位置开始到size长度的字节到流中
(3). 常用实现类
<1>. FileInputStream 文件输入流,封装了从磁盘读取文件到流中的操作,事例代码如下:
package com.dcz.io; import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream; public class IOUtil { /**
* 文件输入流的DEMO-1
* 读取指定文件内容,按照16进制输出到控制台
* 输出10个byte换行
* @param fileName
* @throws IOException
*/
public static void printHex(String fileName) throws IOException{ InputStream ins = new FileInputStream(fileName); int b;
int i = 1;
// 读取到-1说明读取结束
while((b = ins.read()) != -1){
// 读取每一个字节转换成16进制显示
System.out.print(Integer.toHexString(b) + " ");
if(i++ % 10 == 0){
System.out.println();
}
} ins.close();
} /**
* 文件输入流的DEMO-2
* 读取指定文件内容,按照16进制输出到控制台
* 输出10个byte换行
* @param fileName
* @throws IOException
*/
public static void printHexByByteArray(String fileName) throws IOException{ InputStream ins = new FileInputStream(fileName); // 第一种写法,因为有可能这个字节数组放不下。 一次性读取
/* byte[] buffer = new byte[20 * 1024];
int byteSize = ins.read(buffer, 0, buffer.length);
int j=1;
for(int i=0; i<byteSize; i++){
System.out.print(Integer.toHexString(buffer[i]) + " ");
if(j++ % 10 == 0){
System.out.println();
}
}*/ // 第二种写法,循环读取
int j = 1;
int b;
byte[] buffer = new byte[10];
while((b = ins.read(buffer, 0, buffer.length)) != -1){
for(int i=0; i<b; i++){
System.out.print(Integer.toHexString(buffer[i]) + " ");
if(j++ % 10 == 0){
System.out.println();
}
}
} ins.close();
} public static void main(String[] args) { try {
IOUtil.printHexByByteArray("E:\\demo.txt");
} catch (IOException e) {
e.printStackTrace();
}
} }
<2>. FillOutputStream 文件输出流。封装了从输入流中写入文件到磁盘操作。事例代码如下:
package com.dcz.io; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; public class IOUtil { /**
* 将内容写到指定文件中
* @param fileName
* @throws IOException
*/
public static void writeToFile(String fileName) throws IOException{ OutputStream os = new FileOutputStream(fileName);
os.write('a');
os.write('b');
int i = 10;
os.write(i >>> 24);
os.write(i >>> 16);
os.write(i >>> 8);
os.write(i);
String str = "中国人";
byte[] b = str.getBytes("gbk");
os.write(b); os.close();
} /**
* 简单的文件拷贝操作
* @param src
* @param desc
* @throws Exception
*/
public static void copyFile(File src, File dest) throws Exception{ if(!src.exists()){
throw new IllegalAccessException("文件不存在!");
} // 创建文件输入流对象
InputStream inputstream = new FileInputStream(src);
// 创建文件输出流对象
OutputStream outputStream = new FileOutputStream(dest); int b;
byte[] buffer = new byte[2048];
// 循环读取文件内容到字节序列中,直到读取结束
while((b = inputstream.read(buffer, 0, buffer.length)) != -1){
// 写入一个缓冲字节序列到磁盘中
outputStream.write(buffer);
outputStream.flush();
}
outputStream.close();
inputstream.close();
} public static void main(String[] args) { File scrFile = new File("D:\\cglib-3.1.jar");
File destFile = new File("E:\\abc.jar"); try {
//IOUtil.writeToFile(fileName);
//IOUtil.printHex(fileName);
IOUtil.copyFile(scrFile, destFile);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} }
Java Io 流(输入输出流)的更多相关文章
- Java IO学习--输入输出流
一.Java IO的定义 I/O:输入输出系统,由输入输出控制系统和外围设备两部分组成. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输 ...
- IO流输入 输出流 字符字节流
一.流 1.流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. ...
- JAVA Io 缓冲输入输出流
java中提供带缓冲的输入输出流.在打开文件进行写入或读取操作时,都会加上缓冲,提高了IO读写性能. 1. BufferedInputStream 缓冲输入流 2. BufferedOutputStr ...
- 《三》Java IO 字节输入输出流
那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream) ...
- java Io文件输入输出流 复制文件
package com.hp.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...
- IO流输入输出流,字符字节流
一.流 1.流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. ...
- Java IO流-标准输入输出流
2017-11-05 19:13:21 标准输入输出流:System类中的两个成员变量. 标准输入流(public static final InputStream in):“标准”输入流.此流已打开 ...
- Java IO流学习总结一:输入输出流
Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...
- Java中的IO流之输出流|乐字节
大家好,乐字节小乐又来了.上一篇给大家带来的是:Java中的IO流之输入流|乐字节,本文将继续讲述IO流之输出流. 一.输出流 1.抽象类:OutputStream 和 Writer Output ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
随机推荐
- Docker change directory
https://forums.docker.com/t/how-do-i-change-the-docker-image-installation-directory/1169/2 How do I ...
- uC/OS-II类型定义
/*************************************************************************************************** ...
- SQL Server编程(04)基本语法【转载】
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
- 9月22日上午JavaScript----window对象
window对象 window属性: opener:打开当前窗口的源窗口,如果这个窗口是由别的网页点击链接跳转过来的,或者是从另外一个页面点击打开窗口打开的,opener就是找到源页面的.如果当前窗口 ...
- C风格字符串与C++风格字符串
C风格字符串与C++风格字符串 C风格字符串:对字符串进行操作的 C 函数定义在头文件<cstring>中: 1. 字符串定义:char* result: 2. 字符串的最后一个字符是nu ...
- codeforces 719A Vitya in the Countryside(序列判断趋势)
题目链接:http://codeforces.com/problemset/problem/719/A 题目大意: 题目给出了一个序列趋势 0 .1 .2 .3 ---14 .15 .14 ----3 ...
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
推荐博文,博客.写得很好,给个赞. Reference Link : http://blog.csdn.net/xiaowei_cqu/article/details/7829481 一阶导数法:梯度 ...
- Jquery实现textarea根据文本内容自适应高度
本文给大家分享的是Jquery实现textarea根据文本内容自适应高度,这些在平时的项目中挺实用的,所以抽空封装了一个文本框根据输入内容自适应高度的插件,这里推荐给小伙伴们. autoTextare ...
- 2014-10-2 bug更新5 ecshop和ectouch解决动态ip登录超时和购物车清空问题
有客户说登陆网站后台操作的时候,会时不时的掉一下,要重新登陆才能继续操作,自动登出的频率快和时间短,针对这个问题是因为: 购物车问题原因的产生是因为动态IP的SESSEION机制导致很多在公司或者其他 ...
- .NET获取服务器信息,如服务器版本、IIS等
.NET获取服务器信息,如服务器版本.IIS等 .NET获取服务器信息,如服务器版本.IIS版本.数据库大小.网站系统空间占用大小.网站部署路径等等 .NET获取系统环境信息 #region 返回操作 ...