java IO 流

 
D:/io.txt 的内容如下: FielInputStream 测试

1. FileInputStream字节流输入流测试
package com.io;

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

public class T001_FileInputStream {
 

	public static void main(String[] args) {
		int b=0;
		FileInputStream in=null;
		
		//读取只指定文件、没有找到就退出
		try {
			in=new FileInputStream("D:/io.txt");//读取指定文件
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("没有找到指定文件");
			System.exit(-1);//退出
		}
		
		//如果读到指定文件、就遍历打印出来内容
		try {
			//统计读了多少个字节文件
			long num=0;
			//开始读、把读取到的文件字节赋给b变量、如果说文件已经读完则返回-1
			while((b=in.read())>-1){
				//将读取到的字节文件以字符的形式输出
				System.out.print((char)b);
				num++;
			}
			in.close();
			System.out.println("共读取"+num+"个字节文件");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("文件读取出错");
			System.exit(-1);
		}
	}
}
总结:
打印结果:FielInputStream ????共读取20个字节文件
思     考:为什么io.txt中的中文打印出来的是问号了,因为我们这里使用的是字节流,是一个字节一个字节的往里读,而一个汉字占2个字节,所以改为FileReader字符流就可以了    
 

2.FileOutputStream字节流输出流测试
package com.io;

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

public class T002_FileOutputStream {
	public static void main(String[] args) {
		int b=0;
		FileInputStream in=null;
		FileOutputStream out=null;
		
		try {
		    //读取指定文件
			in=new FileInputStream("D:/io.txt");
		   //将读取到的指定文件io.txt内容写入到目标文件io2.txt中去
			  //注意如果io2.txt文件不存在,FileOutputStream会自动帮你建立一个文件
			out=new FileOutputStream("D:/io2.txt");
			
			//开始读、把读取到的文件字节赋给b变量、如果说文件已经读完则返回-1
			while((b=in.read())>-1){
			    //将读取到的文件内容写入目标文件io2.txt
				out.write(b);
			}	
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("没有找不到指定文件"); 
			System.exit(-1);//退出
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("文件复制错误"); 
			System.exit(-1);
		}
		System.out.println("文件复制成功");
	}
}
思考:
    阅读上述程序我们可以借助FieInputStream和FileOutputStream的特性完成文件的上传
 

3.FileReader FileWriter字符流输出流测试
package com.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class T003_FileReaderFileWriter {
	public static void main(String[] args) {
		int b=0;
		FileReader reader=null;
		FileWriter writer=null;
		
		try {
			//读取指定文件
			reader=new FileReader("D:/io.txt");
			//将读取到的指定文件io.txt内容写入到目标文件io2.txt中去
			//注意如果io2.txt文件不存在,FileOutputStream会自动帮你建立一个件
			writer=new FileWriter("D:/io3.txt");
			
			//开始读、把读取到的文件字节赋给b变量、如果说文件已经读完则返回-1
			while((b=reader.read())>-1){
			    //将读取到的文件内容写入目标文件io2.txt
				writer.write(b);
			}	
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("没有找不到指定文件"); 
			System.exit(-1);//退出
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("文件复制错误"); 
			System.exit(-1);
		}
		System.out.println("文件复制成功");
	}
}
 
 
4.BufferedReader BufferedWriter缓冲流(处理流)测试
package com.io;

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

//Buffered
public class T004_BufferedReader_Writer {

	public static void main(String[] args) {
	   try {
		//形象思维:采用FilerWriter字符流往目标文件io.txt里写内容,
		//但是由于该接口不好用所以在外面套一层'管子'BufferedWriter往里写
		BufferedWriter bfw =new BufferedWriter(new FileWriter("D:/io4.txt"));
		
		//形象思维:采用FileReader字符流读取目标文件io.txt里的内容,
		//但是由于该接口不好用所以在外面套一层'管子'BufferedReade往外读
		BufferedReader bfr=new BufferedReader(new FileReader("D:/io4.txt"));
		
		//我们来测试一下,先写进去,再读出来
		String s=null;
		
		//写
		for (int i = 0; i < 10; i++) {
			s=String.valueOf(Math.random());
			bfw.write(s);//写入
			bfw.newLine();//写一串字符,换一行
		}
		bfw.flush();//保证全部写进去
		
		//读,一行一行的往外读,显示
		while ((s=bfr.readLine())!=null) {
			System.out.println(s);
		}
		
		bfw.close();
		bfr.close();
		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
}

 
 
5
package com.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

//转换流
public class T005_TestTransForm {
	public static void main(String[] args) {
		//将写入的字节流内容转换成字符流再写入指定的文件
		try {
			//指定了true在写入的时候就是在原有文件上追加内容,否则就是覆盖
			OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("D:/io.txt",true),"GBK");
			osw.write("你好");
			System.out.println(osw.getEncoding());
			osw.close();
		} catch (FileNotFoundException e) {
			System.out.println("没有找到指定的文件");
			System.exit(-1);
		} catch (IOException e) {
			System.out.println("写入失败");
			System.exit(-1);
		}
		System.out.println("写入成功");
	}
}

6
package com.io;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

//转换流
public class T006_TestTransForm {
	public static void main(String[] args) {
		//将输入的字节内容转换成字符流
		InputStreamReader isr=new InputStreamReader(System.in);
		//为了能够一行一行的读取数据,在isr上加了一层处理流
		BufferedReader bfr=new BufferedReader(isr);

		String s =null;
		try {
			s = bfr.readLine();
			//如果说读取到的s不为null,并且s不等于exit就打印显示出输入的数据
			while (s!=null) {
				if(s.equalsIgnoreCase("exit")){
					break;
				}else{
					System.out.println(s.toUpperCase());
					s=bfr.readLine();
				}
			}
			bfr.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

7
package com.io;
import java.io.*;
public class T007_DataStream {
	public static void main(String[] args) {
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
		DataOutputStream dos = new DataOutputStream(baos);
		try {
			dos.writeDouble(Math.random());
			dos.writeBoolean(true);
			
		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
			System.out.println(bais.available());
			
			DataInputStream dis = new DataInputStream(bais);
			System.out.println(dis.readDouble());//先存的先取出来
			System.out.println(dis.readBoolean());
			dos.close();  dis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
 
 
8
package com.io;

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

public class T008_PrintStream1 {
	public static void main(String[] args) {
		PrintStream ps = null;
		try {
			//写了true为追加,否则覆盖原文件内容
			FileOutputStream fos = new FileOutputStream("D:/io.txt",true);
			ps = new PrintStream(fos);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if(ps != null){
			//改变print输出方向,默认在控制台输出,
			//现在改为向d:/io.txt中输出
			System.setOut(ps);
		}
		for(char c = 0; c <= 10 ;c++){
		    //向目标文件中打印进去10条随机数
			System.out.println(Math.random());
		}
	}
}

9
package com.io;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;

public class T009_PrintStream {
	public static void main(String[] args) {
		 //args[0]接收目标文件参数
		String filename ="D:/io.txt";
		if(filename!=null){
			list(filename,System.out);
		}
	}
	public static void list(String f,PrintStream fs){
		try {
			BufferedReader br = new BufferedReader(new FileReader(f));
			String s = null; 
			while((s=br.readLine())!=null){
				//打印显示
				fs.println(s);            
			}
			br.close();
		} catch (IOException e) {
			fs.println("无法读取文件");
		}
	}
}

10
package com.io;

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

public class T010tPrintStream {
	public static void main(String[] args) {
		String s = null;
		//接收输入
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			//向目标文件追加写入得信息,log4j
			FileWriter fw = new FileWriter("D:/io.txt",true);
			PrintWriter log = new PrintWriter(fw);

			//如果输入的信息不为null并且不是exit,就将信息记入目标文件
			while ((s = br.readLine())!=null) {
				if(s.equalsIgnoreCase("exit")){ 
					break;
				}else{

					log.println("开始操作---"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E").format(new Date()));
					log.println(s.toUpperCase());
					log.println("操作结束---"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E").format(new Date()));
					log.println();
				}
			} 
			log.flush();
			log.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
 
直接将对象存盘
 
package com.io;

import java.io.*;

public class T011ObjectIO {
	public static void main(String args[]) throws Exception {
		T t = new T();//实例化对象
		t.k = 8;//重新指定k的值,如果k被transient了k默认为0
		//写入对象
		FileOutputStream fos = new FileOutputStream("D:/io.txt");
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(t);
		oos.flush();
		oos.close();

		//读取对象
		FileInputStream fis = new FileInputStream("D:/io.txt");
		ObjectInputStream ois = new ObjectInputStream(fis);
		T tReaded = (T)ois.readObject();
		System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);

	}
}

class T implements Serializable{//序列化
	int i = 10;
	int j = 9;
	double d = 2.3;
	//k被transient透明化了,即k值不予考虑默认为0;
	transient int k = 15;
}
 
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值