java.IO

注:本博客内容来自马士兵javase教程中的IO节



字节流

字节型的输入输出


FileInputOutputStreamTest.java



package com.dao.chu;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputOutputStreamTest{

	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException {
		
		
		try {
			//读取文件
			FileInputStream in = new FileInputStream("K:\\css\\style.css");
			//写入文件
			FileOutputStream out = new FileOutputStream("K:\\css\\style2.css");
			int b=0;
			
			while ((b=in.read())!=-1) {
				System.out.print((char)b);
				out.write((char)b);
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}

}



字符流

字符型的输入输出  (2个字节的读取,不会有将中文读出一半的现象)


FileReaderWriterTest


package com.dao.chu;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReaderWriterTest {

	public static void main(String[] args) throws IOException {
		
		FileReader read = new FileReader("K:\\css\\style.css");
		FileWriter writer = new FileWriter("K:\\css\\style3.css");
		
		int c=0;
		while ((c=read.read())!=-1) {
			
			System.out.print((char)c);
			writer.write((char)c);
		}
				
		read.close();
		writer.close();
	}

}



处理流

包在别的流上的流


1.缓冲流,套接在相应的节点流之上,对读写提供缓冲的功能。提高读写效率,减少IO读写次数,保护硬盘。


BufferedReader提供readLine()用于读取一行字符串

BufferedWriter提供newLin()写一个行分隔符


BufferedReaderWriterTest


package com.dao.chu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaderWriterTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new FileReader("K:\\css\\style.css"));
		BufferedWriter bw = new BufferedWriter(new FileWriter("K:\\css\\style6.css"));
		
		String a=null;
		while ((a =br.readLine())!=null) {
			
			System.err.println(a);
			bw.write(a);
			bw.newLine();
			
		}
		bw.flush();
		br.close();
		bw.close();
	}

}


转换流

功能:把字节流转换为字符流,把字符流转换为字节流。


TransFormIOTest


package com.dao.chu;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TransFormIOTest {

	public static void main(String[] args) throws IOException {
		
		//将字节流转换为字符流
		InputStreamReader isReader = new InputStreamReader(new FileInputStream("K:\\css\\style.css"));
		OutputStreamWriter otWriter = new OutputStreamWriter(new FileOutputStream("K:\\css\\style7.css"));
		int a;
		
		while ((a=isReader.read())!=-1) {
			
			System.out.print((char) a);
			otWriter.write((char) a);
			
		}
		
		isReader.close();
		otWriter.close();
	}
}


TransFormTest2  

将输入的小写字母转为大写,输入exit则退出


package com.dao.chu;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TransFormTest2 {

	public static void main(String[] args) throws IOException {
		
		//转换流  字节流转换为字符流
		InputStreamReader isReader = new InputStreamReader(System.in);
		
		//缓冲流
		BufferedReader br = new BufferedReader(isReader);
		
		String s = br.readLine();
		
		while (null!=s) {
			
			if (s.equalsIgnoreCase("exit")) {
				break;
			}else {
				System.out.println(""+s.toUpperCase());
				s=br.readLine();
			}
			
		}
		
		br.close();isReader.close();
		
		
		
		

	}

}


数据流

用于存储和机器无关的java原始类型


DataAndByteArrayTest


package com.dao.chu;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class DataAndByteArrayTest {

	public static void main(String[] args) throws IOException {
		
		
		//字节数组处理输出流
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		//数据输出流
		DataOutputStream dops = new DataOutputStream(baos);
		
		dops.writeDouble(Math.random());
		dops.writeBoolean(true);
		
		//字节数组处理输入流
		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 
		//数据输入流
		DataInputStream dis = new DataInputStream(bais);
		
		System.out.println(dis.available());
		System.out.println(dis.readDouble());
		System.out.println(dis.readBoolean());
		

		baos.close();dops.close();bais.close();dis.close();
	}

}


输出(第一行的意思是一共写了9个字节进去):

9
0.7450755910301042
true


打印流

(只有输出流,无输入流)


PrintStreamTest


package com.dao.chu;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class PrintStreamTest {

	public static void main(String[] args) throws IOException {
		
		FileOutputStream fos = new FileOutputStream("K:\\css\\hello.data");
		
		PrintStream ps = new PrintStream(fos);
		
		if (null!=ps) {
			//System默认输出在console中,这里设置在新的文件中,输出内容将在hello.data中
			System.setOut(ps);
		}
		
		for (int i = 0; i < 65536; i++) {
			
			System.out.print((char)i);
		}
		
		fos.close();
		ps.close();
		

	}

}


Object流


直接将Object写入或读出


该Object需序列化 implements Serializable

序列化的意思是直接将对象转换为字节流写入硬盘上


ObjecrtIOTest


package com.dao.chu;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class ObjecrtIOTest {


	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		
		
	    //写入文件中  
        FileOutputStream out = new FileOutputStream("K:\\css\\style9.css");
        ObjectOutputStream oos = new ObjectOutputStream(out);  
        T t = new T(5,5,"black");  
        oos.writeObject(t);  
          
        //从文件中读取  
        FileInputStream in = new FileInputStream("K:\\css\\style9.css");
        ObjectInputStream ois = new ObjectInputStream(in);  
        T t2=(T)ois.readObject();  
        System.out.println(t2.toString());  
        
        out.close();
        oos.close();  
        in.close();
		

	}

}

class T implements Serializable{
	
	private int hight;
	private int with;
	private String colorString;
	
	public T(int hight, int with, String colorString) {
		super();
		this.hight = hight;
		this.with = with;
		this.colorString = colorString;
	}
	public int getHight() {
		return hight;
	}
	public void setHight(int hight) {
		this.hight = hight;
	}
	public int getWith() {
		return with;
	}
	public void setWith(int with) {
		this.with = with;
	}
	public String getColorString() {
		return colorString;
	}
	public void setColorString(String colorString) {
		this.colorString = colorString;
	}
	@Override
	public String toString() {
		return "T [hight=" + hight + ", with=" + with + ", colorString="
				+ colorString + "]";
	}
	
	
}


输出:

T [hight=5, with=5, colorString=black]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值