27、IO包中的其他类

一、操作基本数据类型: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操作一定要先明确数据源和目的,然后再选择具体的流对象来进行操作

 

你可能感兴趣的:(datainputstream,stringreader,CharArrayReader)