`
阅读更多

一、操作基本数据类型:DataInputStream DataOutputStream

 

 

/**
 *数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。
 *然后,应用程序可以使用数据输入流将数据读入。 
 */
public class DataOutputStream extends FilterOutputStream implements DataOutput
{
	//创建一个新的数据输出流,将数据写入指定基础输出流
	public DataOutputStream(OutputStream out){}


	//将字符串按字符顺序写入基础输出流。通过 writeChar 方法将每个字符写入数据输出流
	public final void writeChars(String s)
                      throws IOException{}

	writeByte(int v) writeChar(int v) writeDouble(double v)....
}

 

/**
 *数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型
 *然后,应用程序可以使用数据输入流将数据读入。 
 */
public class DataInputStream extends FilterInputStream implements DataInput
{
	//使用指定的底层 InputStream 创建一个 DataInputStream
	public DataInputStream(InputStream in){}


	readByte() readChar() readDouble()....
}

 

 

 示例:

 

import java.io.*;

public class DataStreamDemo {

	public static void main(String[] args) throws IOException {
		DataOutputStream dos = new DataOutputStream(new FileOutputStream("e:/mm.txt"));
		DataInputStream dis = new DataInputStream(new FileInputStream("e:/mm.txt"));
		writeData(dos);
		readData(dis);
	}
	public static void writeData(DataOutputStream dos) throws IOException
	{
		dos.writeInt(25);
		dos.writeBoolean(true);
		dos.writeDouble(5);
		dos.writeByte(2);
		dos.close();
	}
	public static void readData(DataInputStream dis) throws IOException
	{
		int a = dis.readInt();
		boolean b = dis.readBoolean();
		double c = dis.readDouble();
		byte d = dis.readByte();
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		dis.close();
	}
}

 

 

二、操作字节数组:ByteArrayInputStream ByteArrayOutputStream

 

/**
 *此类实现了一个输出流,其中的数据被写入一个 byte 数组。
 *缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。 
 *关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。 
 */
public class ByteArrayOutputStream extends OutputStream
{
	//创建一个新的 byte 数组输出流。缓冲区的容量最初是 32 字节,如有必要可增加其大小
	public ByteArrayOutputStream(){}

	//创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。 
	public ByteArrayOutputStream(int size){}

	//将此 byte 数组输出流的 count 字段重置为零,从而丢弃输出流中目前已累积的所有输出。通过重新使用已分配的缓冲区空间,可以再次使用该输出流。 
	public void reset(){}

	//返回缓冲区的有效字节的数目。
	public int size(){}

	//创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中
	public byte[] toByteArray(){}

	//使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串
	public String toString(){}

	//使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
	public String toString(String charsetName)
                throws UnsupportedEncodingException{}

	public void write(int b){}
	public void write(byte[] b,
                  int off,
                  int len){}

	//将此 byte 数组输出流的全部内容写入到指定的输出流参数中
	public void writeTo(OutputStream out)
             throws IOException{}
}

 

/**
 *ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
 *内部计数器跟踪 read 方法要提供的下一个字节 
 *关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException
 */
public class ByteArrayInputStream extends InputStream
{
	//创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组
	public ByteArrayInputStream(byte[] buf){}

	//创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组
	public ByteArrayInputStream(byte[] buf,
                            int offset,
                            int length){}

	//将缓冲区的位置重置为标记位置
	public void reset(){}
}

 示例:

import java.io.*;

public class ByteArrayStreamDemo {

	public static void main(String[] args) {
		//数据源
		ByteArrayInputStream bis = new ByteArrayInputStream("dsljfa".getBytes());
		
		//数据目的
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		
		int num = 0;
		while((num=bis.read())!=-1)
		{
			bos.write(num);
		}
		String str = bos.toString();
		System.out.println(str);
	}
}

 

三、操作字符数组:CharArrayReader CharArrayWriter 底层用的是char[]

       操作字符串:StringReader StringWriter 底层用的是StringBuffer

       操作和ByteArrayInputStream ByteArrayOutputStream类似

 

四、IO操作一定要先明确数据源和目的,然后再选择具体的流对象来进行操作

 

分享到:
评论

相关推荐

    java io包中简单的常用类使用

    NULL 博文链接:https://mrpengpengda.iteye.com/blog/1536292

    io包中常用类的作用、重要方法及类之间的继承关系

    io包中常用类的作用、重要方法及类之间的继承关系。

    java.io包中的File类.doc

    java.io包中的File类.doc

    Java精华版 chm Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及Java EE 5.0、Java IO 包中的Decorator模式等

    本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...

    java IO 类层次图

    java IO 类层次图,以清晰明了的形式标明了java io中各种类的关系

    java-android面试题

    java-android面试题

    Java标准类库.ppt

    包是由.class文件组成的一个集合,.class文件时可以用Java...包是一种松散的概念,一般情况下,功能相同或者相关的类组织在一个包中,例如java.io包中的类都与输入、输出有关,java.applet包中的类都与applet程序有关。

    IO和线程java输入输出 多线程

    JVM从外部数据源中读入或写出数据,称为流 JVM从外部数据源中读入数据,称输入流 JVM从内存中写出数据,称为输出流 java.io包中都是流用到的类

    IO包的所有内容

    1.掌握文件类(File类)的使用 2.IO输入/输出流的概念3.IO的分类4.掌握IO包中的流的基本应用5.了解字符编码问题6.掌握对象序列化(串行化)

    common-io範例程式

    common-io包中封裝了很多常用方法,能夠方便對文件操作

    java.io包讲解

    专业的课程讲解 所有的程序都离不开信息的输入和输出。例如,从键盘读取数据、在网络上交换数据、打印报表、读写文件信息等,都要涉及数据输入输出的处理。...在Java中,处理数据流的类主要被放在java.io包中 。

    完整版Java全套入门培训课件 Java基础 07-IO(共29页).pptx

    IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 。 流按流向分为:输入流,输出流。

    手写一个文件上传demo

    Java 流相关的类都封装在 java.io 包中,而且每个数据流都是一个对象。所有输入流类都是 InputStream 抽象类(字节输入流)以及 Reader 抽象类(字符输入流)的子类。其中 InputStream 类是字节输入流的抽象类,是...

    介绍Java对象序列化使用基础

    将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象...

    java72-java-advance.rar

    2.不属于java.io包中的接口的一项是(C) a)DataInput b) DataOutput c) DataInputStream d) ObjectInput 3. ByteArrayOutputStream将下列哪一项作为输出流 C a) 字符b)字节c)字节数组D)对象 4. 下列流中哪一个...

    Java读存二进制大文件块

    Java读存大块二进制资料文件,java.io 包中提供了BufferedInputStream 和BufferedOutputStream 类来缓存的读写流。但是读写大块的数据文件时,使用这两个类的效果并不是很好。本例演示了如何自定义缓存区,并使用不...

    文字编辑器软件 java设计

    利用java.io包中的输入输出输出流类,负责文件的读取和写入操作。在Java的实用工具类库java.util包中,Java提供了一些实用的方法和数据结构。实现简单的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够...

    Java之IO流学习总结

    完全可以从IO 包中去除,还完全不影响IO 包的结构,却让其更“纯洁”――纯洁的Decorator 模式。 PrintStream 也可以认为是一个辅助工具。主要可以向其他输出流,或者FileInputStream 写入数据,本身内部实现还是带...

    java代码实现文件的拷贝

    Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等

Global site tag (gtag.js) - Google Analytics