`
schy_hqh
  • 浏览: 542553 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(IO)字节流 InputStream OutputStream

 
阅读更多

 

字节流:以字节为单位进行读写,二进制文件:图片,音频,视频等非字符数据只能用字节流来操作。

 

package com.gc.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class InputStreamDemo {
	/**
	 * 字节流---底层以byte为单位进行操作
	 * 字符流不能读取字节文件,只能用来读取文本数据
	 * 字符流1次读取2个字节,而字节流1次只读取1个字节
	 * 
	 * 字节流用来处理图片、音频、视频等字节文件
	 * 对于字符文件,使用专门的字符流操作!
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//以下使用字节流操作文本数据,仅为了演示字节流的用法,真正操作字符数据,请使用Reader和Writer!
		writeFileWithOutputStream();
		readFileWithInputStream();

		copyFileWithBuffer();
		copyFileWithJavaBuffer();
	}
	
	/**
	 * 使用java提供的缓冲区对象进行操作
	 * 很奇怪,如果不自定义一个缓冲区,拷贝很慢
	 * 所以,还是自定义一个缓冲区来使用
	 * 哎,这是为什么呢?
	 * @throws IOException
	 */
	private static void copyFileWithJavaBuffer() throws IOException {
		FileInputStream fis = new FileInputStream("temp\\a.jpg");
		FileOutputStream fos = new FileOutputStream("temp\\b.jpg");
		
		BufferedInputStream bufis = new BufferedInputStream(fis);//缓冲读
		BufferedOutputStream bufos = new BufferedOutputStream(fos);//缓冲写
		
		byte[] bBuf = new byte[1024];//仍然提供外部缓冲区,不然读写很慢
		int len = 0;
		while((len=fis.read(bBuf))!=-1) {
			fos.write(bBuf,0,len);
		}
		bufis.close();//内部会调用fis.close()
		bufos.close();//内部会调用fos.close()
	}

	/**
	 * 自定义缓冲区来操作
	 * @throws IOException
	 */
	private static void copyFileWithBuffer() throws IOException {
		FileInputStream fis = new FileInputStream("temp\\a.jpg");
		FileOutputStream fos = new FileOutputStream("temp\\b.jpg");
		byte[] bBuf = new byte[1024];//操作字节数据,定义字节数组作为缓冲区(而操作字符数据,则定义字符数组作为缓冲区)
		int len = 0;
		while((len=fis.read(bBuf))!=-1) {
			fos.write(bBuf, 0, len);
			//fos.flush();//这里的flush()没有任何用,因为方法的实现为空
		}
		fis.close();
		fos.close();
	}

	private static void readFileWithInputStream() throws FileNotFoundException,
			IOException {
		FileInputStream fis = new FileInputStream("temp\\byte.txt");
		byte[] buf = new byte[1024];
		int len = 0;
		while((len=fis.read(buf))!=-1) {
			System.out.println(new String(buf,0,len));
		}
	}

	private static void writeFileWithOutputStream()
			throws FileNotFoundException, IOException {
		FileOutputStream fis = new FileOutputStream("temp\\byte.txt");
		byte[] b = "hello".getBytes();
		fis.write(b);
		fis.close();
	}
}

 

分享到:
评论

相关推荐

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    Day20IO流.md

    =分类: 方向 单位== ==单位 方向 输入流 输出流== ==字节流 InputStream OutputStream 主要用来对影像文件或者媒体== ==字符流 Reader Writer 主要用来对文本文件进行操作==

    java io图解

    java io流总结,包括字符流,字节流,很详细。inputStream outputStream

    JAVA IO流技术

    字节流:按照字节读取数据(InputStream、OutputStream) 字符流:按照字符读取数据(Reader、Writer) 功能不同: 节点流:可以直接从数据源或目的地读写数据。 处理流:不直接连接到数据源或目的地,是处理流的流...

    java IO流读写

    InputStream和OutputStream 1.DataInputStream,DataOutputStream 从Stream里读取基本类型的数据 BufferedReader,BufferedWriter 从Reader/Writer里读取基本类型的数据 2.BufferedInputStream,...

    字节流字符流练习

    字节流与字符流的练习文档,内附一个简要的记事本综合文档。

    IO流各个类的使用方法

    【字节流】 InputStream OutputStream FileInputStream FileOutputStream DataInputStream DataOutputStream BufferedInputStream BufferedOutputStream ObjectInputStream ObjectOutputStream ByteArrayInputStream...

    Java中IO流知识点总结

     字节流:InputStream OutputStream  字符流:Reader Writer  二、流功能分析  读取流是从输入设备或数据对象中读取数据到程序,用程序进行处理读入的数据,写出流是把程序处理的数据输出到  输出设备上...

    Java IO流之IO流基础

    File类的构造方法3.File类常用方法三、IO流之字节流1.什么是字节流2.字节流的分类3.字节输入流(InputStream)3.1.InputStream类3.1.1.定义以及常用方法3.1.2.用法3.2. FileInputStream类3.2.1.定义以及常用方法...

    Java之IO流学习总结

    InputStream 是所有的输入字节流的父类,它是一个抽象类。 ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。...

    Java IO 体系.md

    - 字节流对象 - InputStream - OutputStream - 字符流对象 - Reader - Writer - 字节流与字符流的转换 - 新潮的 NIO - 缓冲区(Buffer) - 通道(Channel) - 示例:文件拷贝案例 - BIO 和 NIO 拷贝文件...

    IO流的总结

    总结了常用的 RandomAccessFile 随机存取文件类 InputStream 字节输入流 OutputStream 字节输出流 Reader 字符输入流 Writer 字符输出流

    字节流和字符流

    在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)java中提供了专用于输入输出功能的包Java.io,...

    基础深化和提高-IO流技术学习大全

    字节输入流(InputStream)和字节输出流(OutputStream):用于处理二进制数据,以字节为单位进行读写。常见的实现类包括FileInputStream、FileOutputStream等。 字符流: 字符输入流(Reader)和字符输出流...

    Java字符流和字节流对文件操作的区别

    本篇文章主要介绍了Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,对初学者很有用,有需要的朋友可以了解一下。

    Java IO期末复习||五类一接口

    Java IO五类一接口 文件操作类File、...字节输出流OutputStream、字节输入流InputStream 字符输出流Writer、字符输入流Reader 打印流、输入输出重定向 Scanner类 字符编码 序列化操作标识接口Serialiable

    ioliu.rar_IO流 java_Java Reader Writer_java IO_stream

    * io流 运用 * 注意:只要子类 包含以下类名字的,就是该... * InputStream----- 输入字节流 * Reader-------- 输入字符流 * OutputStream-----输出字节流 * Writer --------输出字符流

    java IO流学习笔记——(1)文件字节流

    • 输入流:数据源到程序(InputStream、Reader读进来) • 输出流:程序到目的地(OutputStream、Writer写出去) 流分类 : • 节点流:可以直接从数据源或目的地读写数据 • 处理流(包装流):不直接连接到数据源或目的...

    Java中那些我不明白的小知识(六)–IO流(上)

    什么是IO流? I:input 输入流;read 读取数据 ...文件操作处理单元分类:字节流和字符流 FileInputStream:文件操作输入字节流 FileOutputStream:文件操作输出字节流 FileReader:文件操作输入字节流 FileWri

Global site tag (gtag.js) - Google Analytics