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. SSM的各个配置文件

    SqlMapConfig.xml文件:(这是带了mybatis的分页插件的配置) <?xml version="1.0" encoding="UTF-8" ...

  2. 【原】web移动端常用知识点笔记

    摘要:因为平时搞移动端的比例多一点,做个小小的总结.虽然网上很多这方面的总结,不过还是想自己也总结一下,适合自己的才是最好的.这样也方便以后自己的查阅 viewport模板——通用 <!DOCT ...

  3. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

    一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误:

  4. myeclipse+tomcat内存溢出

  5. 最好的vim教程莫过于vimtutor

    最好的vim教程莫过于vimtutor 直接运行vimtutor即可

  6. Java数据库——处理大数据对象

    处理大数据对象 CLOB中可以存储海量文字 BLOB中可以存储海量二进制数据 如果程序中要想处理这样的大对象操作,则必须使用PreparedStatement完成,所有的内容要通过IO流的方式从大文本 ...

  7. JavaScript学习笔记——节点

    javascript-节点属性详解 根据 DOM,HTML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 HTML 标签是一个元素节点 包含在 HTML 元素中 ...

  8. Visual Studio的调试技巧

    Visual Studio的调试技巧 [原文地址] Debugging Tips with Visual Studio 2010 [原文发表日期] 2010/8/19 10:48 AM 这是我写的关于 ...

  9. 给IOS系统的微信页面赋Title

    给页面赋一个title是最平常不过的事情了,不过在IOS下动态给页面赋title可不是平常的事情. 看代码: function setIOStitle(title) { $body = $('body ...

  10. man中文手册配置

    1.ubuntu环境man中文手册配置 1)  终端输入sudo apt-get install manpages-zh 2)  安装后修改配置文件sudo gedit /etc/manpath.co ...