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 流(输入输出流)的更多相关文章

  1. Java IO学习--输入输出流

    一.Java IO的定义 I/O:输入输出系统,由输入输出控制系统和外围设备两部分组成. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输 ...

  2. IO流输入 输出流 字符字节流

    一.流 1.流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. ...

  3. JAVA Io 缓冲输入输出流

    java中提供带缓冲的输入输出流.在打开文件进行写入或读取操作时,都会加上缓冲,提高了IO读写性能. 1. BufferedInputStream 缓冲输入流 2. BufferedOutputStr ...

  4. 《三》Java IO 字节输入输出流

    那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream)     ...

  5. java Io文件输入输出流 复制文件

    package com.hp.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  6. IO流输入输出流,字符字节流

    一.流 1.流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. ...

  7. Java IO流-标准输入输出流

    2017-11-05 19:13:21 标准输入输出流:System类中的两个成员变量. 标准输入流(public static final InputStream in):“标准”输入流.此流已打开 ...

  8. Java IO流学习总结一:输入输出流

    Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...

  9. Java中的IO流之输出流|乐字节

    大家好,乐字节小乐又来了.上一篇给大家带来的是:Java中的IO流之输入流|乐字节,本文将继续讲述IO流之输出流.   一.输出流 1.抽象类:OutputStream 和 Writer Output ...

  10. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

随机推荐

  1. python 培训之爬虫

    1. 输入文件为 fufang_list.txt yaofang_a aaiwan 阿艾丸 yaofang_a aaiwulingsan 阿艾五苓散 yaofang_a acaitang 阿菜汤 ya ...

  2. angular评论星级指令

    地址: https://github.com/happen-zh/myStar 支持最大数,是否必填,回调,是否只读

  3. WinForm------TreeList实现鼠标经过节点背景色改变

    转载: http://www.cnblogs.com/zfanlong1314/archive/2012/06/26/2564124.html

  4. centos 6.4 系统代理上网 设置

    前面讲了yum 代理设置上网的方法,现在设置一下系统代理上网, 网上很多都不管用,已亲测管用 [root@proxy ~]# cat .bash_profile #root目下添加代理上网,蓝色代码# ...

  5. Python学习笔记——基本语法

    1.程序输出——print语句 >>> myString = 'Hello World!' >>> print myString Hello World! > ...

  6. fileinput模块

    刚才练习的时候,报如下错误: AttributeError: module 'fileinput' has no attribute 'input',后来Google参考这篇文章https://mai ...

  7. jQ控制前端输入用户为空是的提醒

    1.在jQ中$(function(){})函数的意思是 $(document).ready(function(){}) 的简写,用来在DOM加载完成之后执行一系列预先定义好的函数 placeholde ...

  8. Spring Ioc--Bean装配

    继前一篇IoC概述.Spring容器总结,接下来总结下Bean的装配过程. 要使引用程序中的Spring容器成功启动,需要同时具备以下3个条件: 1.Spring框架的类包,放在应用程序的类路径下. ...

  9. 浅谈JavaScript中的正则表达式

    引言 对于正则表达式我想作为程序员肯定使用过它,那天书般的表达方式,我用一次就记住它了.这篇博客先介绍一些正则表达式的内容,然后介绍JavaScript中对正则表达式特有的改进.下面开始介绍正则表达式 ...

  10. Nginx反向代理模板

    nginx反向代理模板,修改nginx.conf #Basic reverse proxy server # upstream wcf{    server localhost:8080; #wcf1 ...