Java的IO操作实例代码

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.csdn.net/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));

		
		
				

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值