Java的IO操作实例代码

本文详细介绍Java中各种IO流的应用及特点,包括FileInputStream/FileOutputStream、FileReader/FileWriter、ByteArrayInputStream/ByteArrayOutputStream、CharArrayReader/CharArrayWriter等。同时,还探讨了如何通过DataInputStream/DataOutputStream进行复杂数据类型的读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringBufferInputStream;
import java.io.StringReader;


@SuppressWarnings("deprecation")
public class FileStreamTest {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//FileOutputStream/FileInputStream
		File f=new File("test.txt");
		FileOutputStream fos=new FileOutputStream(f);
		String str="FileStream 测试!";
		fos.write(str.getBytes());
		fos.close();
		
		FileInputStream fis=new FileInputStream(f);
		byte[] buf=new byte[1024];
		int len=fis.read(buf);
		System.out.println(new String(buf,0,len));
		fis.close();
		
		FileWriter fw=new FileWriter(f);
		fw.write("FileWriter and FileReader 测试!");
		fw.close();
		
		FileReader fr=new FileReader(f);
		char[] frcbuf=new char[1024];
		int frlen=fr.read(frcbuf);
		System.out.println(new String(frcbuf,0,frlen));
		fr.close();
		
		////////////////////////////////////////////////////////////////////////
		
		//ByteArrayOutputStream/ByteArrayInputStream
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
		baos.write("ByteArrayOutputStream and ByteArrayInputStream 测试!".getBytes());
		baos.close(); //关闭无效。

		
		ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
		byte[] buf3=new byte[1024];
		int len2=bais.read(buf3);
		System.out.println(new String(buf3,0,len2));
		//总结:ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据
		//可以这样理解:ByteArrayOutputStream是用来缓存数据的(数据写入的目标(output stream原义),向它的内部缓冲区写入数据,缓冲区自动增长,当写入完成时可以从中提取数据。由于这个原因,ByteArrayOutputStream常用于存储数据以用于一次写入
		//详细理解:http://blog.youkuaiyun.com/rcoder/archive/2011/01/05/6118313.aspx
		
		CharArrayWriter caw=new CharArrayWriter();
		caw.write("CharArrayWriter 测试!");
		
		CharArrayReader car=new CharArrayReader(caw.toCharArray());
		char[] carcbuf=new char[1024];
		int carlen=car.read(carcbuf);
		System.out.println(new String(carcbuf,0,carlen));
		//总结:与ByteArrayInputStream/ByteArrayOutputStream的区别就是字节导向与字符导向
		
	///////////////////////////////////////////////////////////////////////////////////////////////
		
		//StringBufferInputStream
		@SuppressWarnings("deprecation")
		StringBufferInputStream sbis=new StringBufferInputStream("StringBufferInputStream 测试!");
		byte[] buf4=new byte[1024];
		int len3=sbis.read(buf4);
		sbis.close();
		System.out.println(new String(buf4,0,len3));
		System.out.println(len3);
		//StringBufferInputStream已过时,用StringReader替代。
		
		
		StringReader sr=new StringReader("StringReader 测试!");
		char[] cbuf=new char[1024];
		int len4=sr.read(cbuf);
		System.out.println(new String(cbuf,0,len4));
		
		//字节导向的stream转换成字符导向的stream
		File f2=new File("test1.txt");
		FileOutputStream fos2=new FileOutputStream(f2);
		OutputStreamWriter osw=new OutputStreamWriter(fos2);
		osw.write("97java OutputStreamWriter测试");
		osw.close();
		
		FileInputStream fis2=new FileInputStream(f2);
		InputStreamReader isr=new InputStreamReader(fis2);
		char[] isrbuf=new char[1024];
		int isrlen=isr.read(isrbuf);
		System.out.println(new String(isrbuf,0,isrlen));
		
		/////////////////////////////////////////////////////////////////////////////
		
		FileOutputStream fos3=new FileOutputStream("test2.txt");
		DataOutputStream dos=new DataOutputStream(fos3);
		dos.writeUTF("哈哈222222222222xxxxxxxxxxxxxxx");
		dos.close();
		
		FileInputStream fis3=new FileInputStream("test2.txt");
		DataInputStream dis=new DataInputStream(fis3);
		String str2=dis.readUTF();
		System.out.println(str2);
		
		
		FileOutputStream fos4=new FileOutputStream("test3.txt");
		DataOutputStream dos2=new DataOutputStream(fos4);
		dos2.writeInt(12);
		dos2.writeFloat((float) 2.5);
		dos2.writeChars("测试");
		dos2.close();

		
		FileInputStream fis4=new FileInputStream("test3.txt");
		DataInputStream dis2=new DataInputStream(fis4);
		int disInt=dis2.readInt();
		float disFloat=dis2.readFloat();
		char chardis=dis2.readChar();
		char chardis2=dis2.readChar();
		System.out.println(disInt+" "+disFloat+" "+chardis+""+chardis2);
		//总结:DataOutputStream与DataInputstream包装OutputStream与InputStream。在读写操作上更加丰富,应用更简便。能直接Write和read各种基本数据类型和字符串
		
		
		
		FileOutputStream fos5=new FileOutputStream("test4.txt");
		BufferedOutputStream bos=new BufferedOutputStream(fos5);
		bos.write("你好/n你好".getBytes());
		bos.close();
		
		FileInputStream fis5=new FileInputStream("test4.txt");
		BufferedInputStream bis=new BufferedInputStream(fis5);
		int bislen=bis.read();
		System.out.println("bislen="+bislen);
		
		
/*		FileWriter fw2=new FileWriter("test4.txt");
		fw2.write("大家好/n第二行/n第三行");
		fw2.close();*/
		
		FileReader fr2=new FileReader("test4.txt");
		BufferedReader br=new BufferedReader(fr2);
/*		String strbr="";
		String strtemp="";
		while((strtemp=br.readLine())!=null){
			strbr+=(strtemp+"/n");
		}
		System.out.println(strbr);*/
		
		char[] fr2cbuf=new char[1024];
		int fr2len=fr2.read(fr2cbuf);
		System.out.println(new String(fr2cbuf,0,fr2len));

		
		
				

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值