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. JDBC编程的方式

    JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc stateme ...

  2. Can not issue data manipulation statements with executeQuery() 异常处理

    1.这个异常的报错翻译过来就是 不能发出数据操纵语句与executeQuery() 2.这里要检查一下你要执行的实际SQL语句要做什么操作 查询呢?还是修改? 3.如果是修改的话,需要添加@Modif ...

  3. 如何保存联系人到系统通讯录(android)

    1 效果演示: 2 代码演示:

  4. SQL Server 2012 启动

    1.  启动 SQL Server Management studio 2. 选择登录模式 Server name:   "." 代表本地的数据库 Authertication: ...

  5. PHP实现观察者模式

    <?php //php设计模式观察者模式 /** 被观察者 */ class user implements SplSubject{ public $lognum; public $hobby; ...

  6. 使用System Sound Services 播放音效(最简单,比较底层),调用AudioServicesPlaySystemSound()

    1.适用范围:一些很小的提示或警告音频. 2.使用限制: 声音长度不能超过30秒 声音文件必须是PCM或IMA4(IMA/ADPCM)格式.(有时候可播放一些特殊的.mp3) 打包成.caf..aif ...

  7. sql FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  8. Linux下删除命令

    linux删除目录很简单 使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字(警告:不作任何提示,且不可恢复,不要说没提醒哦!严重警告!!!)-r 就是向下 ...

  9. Yii2框架与MongoDB拓展、Redis拓展的安装流程

    @author 周煦辰 2016-03-21 这段时间新上了一个项目,使用的是Yii2框架.这里记录一下Yii2框架.Yii2-Mongo拓展.Yii2-Redis拓展等的安装流程.因为使用的系统是W ...

  10. 贴上自己写的代码-jq隐藏事件