`
SwordShadow
  • 浏览: 270986 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java IO 之字节流

    博客分类:
  • java
阅读更多

字节流是最基本的流,文件的操作、网络数据的传输等等都依赖于字节流。而字符流常常用于读取文本类型的数据或字符串流的操作等等。

 

字节流的API

FileInputStream API

 

1、public int read() throws IOException

Reads a byte of data from this input stream. This method blocks if no input is yet available.

Returns: the next byte of data, or -1 if the end of the file is reached. 

 

2、public int read(byte[] b) throws IOException

Reads up to b.length bytes of data from this input stream into an array of bytes. This method blocks until some input is available.

Parameters:

b - the buffer into which the data is read. 

Returns:

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached. 

 

3、public int read(byte[] b,int off, int len) throws IOException

Reads up to len bytes of data from this input stream into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned.

Overrides: 

read in class InputStream 

Parameters:

b - the buffer into which the data is read.

off - the start offset in the destination array b

len - the maximum number of bytes read. 

Returns:

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached. 

 

FileOutputStream Api

 

1、public void write(int b)

           throws IOException

Writes the specified byte to this file output stream. Implements the write method of OutputStream.

 

2、public void write(byte[] b) throws IOException

Writes b.length bytes from the specified byte array to this file output stream.

Parameters:

b - the data. 

 

3、public void write(byte[] b, int off, int len) throws IOException

Writes len bytes from the specified byte array starting at offset off to this file output stream.

Overrides: 

write in class OutputStream 

Parameters:

b - the data.

off - the start offset in the data.

len - the number of bytes to write. 

 

read和write方法如果不带参数,则每次读取或写入一个byte,每次返回0~255范围内的int值,读取到末尾则返回-1,使用参数byte[] b,则每次开辟b大小的缓存读取或写入数据,相比每次读取或写入一个字节,效率有很大的提升。

测试文本:

 

FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.

 

 

 

测试代码:

package com.it;

import java.io.*

public class TestIOStream {

	public static void testStream() throws Exception {
		InputStream fis = null;
		OutputStream fos = null;
		fis = new FileInputStream("Readme.txt");
		fos = new FileOutputStream("copy.txt");
		long num = 0; //读取字节计数 
		int bt = 0; //每次读入字节内容 
		while ((bt = fis.read()) != -1) {
//			System.out.print((char) bt);
			System.out.print((char) bt);
			fos.write(bt);
			num++;

		}
		System.out.println("读取的字节数为" + num);
		fis.close();
		fos.close();
	}
   /** 
     * 缓冲的字节流测试 
     */ 
    public static void testBufferedStream() { 
        int buffer = 10; //缓冲大小 
        try { 
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("Readme.txt")); 
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy2.txt")); 
            int bench = 0; 
            byte bts[] = new byte[buffer];      //创建字节流缓存 
            while ((bis.read(bts)) != -1) { 
                bos.write(bts);  //将字节写入输出流中,实现文件的copy功能 
                bench++; 
            } 
            System.out.println("bench=" + bench); 
            //将输入流缓冲区中的数据全部写出(千万记住) 
            bos.flush(); 
            bis.close(); 
            bos.close(); 
        } catch (FileNotFoundException e) { 
            System.out.println("找不到指定的文件!"); 
            e.printStackTrace(); 
        } catch (IOException e) { 
            System.out.println("文件读取时发生IO异常!"); 
            e.printStackTrace(); 
        } 
    } 
    
    /** 
     * 字节流的选择读取测试 
     */ 
    public static void testSelectStream() { 
        OutputStream fos = null; 
        int buffer = 15; 
        try { 
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("Readme.txt")); 
            fos = new FileOutputStream("copy3.txt"); 

            byte bts[] = new byte[buffer];      //创建缓存 
            //这个方法有个陷阱,缓存buffer的大小最小为“偏移量+要读取字节数”,在此最小应该为10,否则抛IndexOutOfBoundsException异常 
            bis.read(bts, 5, 5); //从bts数组的第5个开始读取(包含第5个),共读取5个长度,缓存区后5个则为空字符
            //将字节写入输出流中,实现文件的copy功能 
            fos.write(bts); 

            bis.close(); 
            fos.close(); 
        } catch (FileNotFoundException e) { 
            System.out.println("找不到指定的文件!"); 
            e.printStackTrace(); 
        } catch (IOException e) { 
            System.out.println("文件读取时发生IO异常!"); 
            e.printStackTrace(); 
        } 
    } 
	
	public static void main(String[] args) throws Exception {
//		testStream();
//		testBufferedStream();
		testSelectStream();
		System.out.println("done!!");
	}

}

copy3

 

 

 

未完,将继续添加修改

参考:http://lavasoft.blog.51cto.com/62575/95387

 

 

 

 

 

 

 

  • 大小: 6.7 KB
分享到:
评论

相关推荐

    Java IO 字节流 字符流

    Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...

    Java IO字符流和字节流

    ### Java IO字符流和字节流详解 #### 一、引言 在Java编程中,输入输出(简称IO)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...

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

    2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    32.9、java io详解1

    Java IO 之字节流和字符流的区别 Java 中的 IO 操作是指对文件、网络或其他输入/输出设备的读写操作。Java 中的 IO 操作可以分为两大类:字节流和字符流。字节流和字符流是 Java 中的两种基本的 IO 操作方式,它们...

    IO流 javaio java 流

    Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又可以进一步细分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)...

    JavaIO字节输出流的总结共6页.pdf.zip

    Java IO字节输出流是Java平台中用于处理数据输出的核心部分,它允许程序将字节数据写入到各种目标,如文件、网络连接或者内存缓冲区。在Java中,字节输出流通常与字节输入流配合使用,完成数据的读取和写入操作。...

    Java中的字节流.

    ### Java中的字节流 #### 一、字节流简介 在Java中,字节流是一种处理二进制数据的基本方式。它通过一系列类来实现数据的读取和写入功能,这些类主要继承自`InputStream`和`OutputStream`两个抽象类。字节流非常...

    javaIO字节流读取文件方式总结共4页.pdf.zip

    本资料“javaIO字节流读取文件方式总结共4页.pdf”详细介绍了Java字节流在读取文件时的各种方法和应用场景。本文将深入探讨这些知识点。 首先,Java中的字节流分为输入流(InputStream)和输出流(OutputStream)。...

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    本教程将详细介绍Java IO中的字节流、字符流、缓冲流以及转换流,并通过IODemo实例来展示它们的用法。 ### 1. 字节流 字节流是Java中最基础的流类型,用于处理以字节为单位的数据。字节流分为输入流(InputStream...

    Java IO流 总结

    字节流是Java IO流中最基本的流类型,可以处理一切类型的数据。字节流可以分为两种:输入流和输出流。 a) 输入流:InputStream InputStream是字节流的输入流,负责从外部世界输入数据到Java应用程序中。常用的...

    Java字符流和字节流

    在Java中,所有字节流类都是`java.io.InputStream`或`java.io.OutputStream`的子类。这两个类提供了基本的读写操作方法,例如`read()`和`write()`。 **1. 文件输出流(FileOutputStream)** - `FileOutputStream`类...

    java io流 案例

    字符流通常在字节流之上构建,以提供更高效、更方便的文本操作。 在Java IO中,缓冲流(Buffered Stream)被设计用来提高性能,通过在内部创建缓冲区来存储数据。BufferedInputStream和BufferedOutputStream是缓冲...

    IO各种操作文件,字符流、字节流等

    在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...

    Java的IO流讲解代码: File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型

    该代码源码资源是一个用于讲解Java IO流的示例代码库。它包含了常见的IO类和方法的使用...通过研究这些代码示例,读者将能够了解如何使用不同类型的IO类来进行文件读写、字符流、字节流、网络传输等各种常见的IO操作。

    java IO流精讲 JAVA IO流实例开发

    其次,根据处理的数据类型,IO流又分为字节流和字符流。字节流处理原始的8位字节数据,如FileInputStream和FileOutputStream;而字符流处理Unicode字符,如Reader和Writer。字符流通常用于处理文本数据,它们内部...

    java IO流读写

    在Java中,IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,而字符流则处理Unicode编码的16位字符。 1. **字节流**: - `InputStream` 和 `OutputStream` 是所有...

    Java-Io流,练习

    1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:...

    java之io流实例

    IO流在Java中分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理的是Unicode编码的字符,而字节流则处理基本的8位字节数据。这两类流又各自分为输入流(Input Stream)和输出流(Output ...

Global site tag (gtag.js) - Google Analytics