字符流

java 提供了转换流:

public static void huoqu(){
		try {
			BufferedReader br = new BufferedReader(new FileReader("d.txt"));
			ArrayList<String> list = new ArrayList<String>();
			String line = null;
			while((line=br.readLine())!=null){
				list.add(line);
			}
			System.out.println(list.get((int) (Math.random()*(list.size()))));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

    字符流=字节流+编码表

    编码表:

        

编码: 看得懂---看不懂

    String---byte[]

解码: 看不懂---看得懂的

    byte[] --String

字符流=转换(字节流)

输出流

    OutputStreamWrite(new OutputStream)--简化 FileWriter--BufferedWriter(new FileWriter(""))

public static void Demo4(){
		try {
			OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream("D:/a.txt"));
			out.write("你好,世界");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

输入流

    InputStreamReader(new InputStream)---简化 FileReader--BufferedReader(new FileReader(String url));

public static void Demo5(){
		try {
			InputStreamReader red = new InputStreamReader(new FileInputStream("D:/a.txt"));
			int index =0;
			while((index=red.read())!=-1){
				System.out.println((char)index);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

字符流写入数据在缓冲区中,需要刷新一下,flush() 方法

面试题:

    close() --关闭流以前,先刷新一下流,就不能再使用了-- 小东西 直接使用close()就可以

    flush() 仅仅刷新缓冲区,刷新之后,还可以使用


那些复制,和啥,都和其他方法一下,懒得写了

//有个新东西在字符缓冲流中

Writer ---writerLine();--write写入数据之后---> newLine

Reader ---readLine(); --可以直接读取

代码如下:

//字符缓冲流的特殊方法
//newLine()--buuferedWriter
//readeLine() --bufferedReader
public class IoDemo9 {
	public static void main(String[] args) {
	
		readLin();
	}
	public void newLine(){
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
			for(int i=0;i<100;i++){
				bw.write("abc"+i);
				bw.newLine();
				bw.flush();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public  static void readLin(){
		 try {
			 String s="";
			BufferedReader br = new BufferedReader(new FileReader("b.txt"));
			while((s=br.readLine())!=null){
				System.out.println(s);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
	}
}
字符流复制复制文本
public class IoDemo10 {
//复制文本
	public static void main(String[] args) {
		copy(new File("D:/a.txt"), new File("c.txt"));
	}
	public static void copy(File formFile, File newFile){
		BufferedWriter bw=null;
		BufferedReader br=null;
		try {
			 bw  = new BufferedWriter(new FileWriter(newFile));
			 br  = new BufferedReader(new FileReader(formFile));
			if(!newFile.exists()){
				newFile.createNewFile();
			}
			String red = null;
			while((red=br.readLine())!=null){
				bw.write(red);
				bw.newLine();
				bw.flush();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				bw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				br.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

把集合中的数据写入到文件中:

public static void duxie(){
		ArrayList<String> list = new ArrayList<String>();
		list.add("你好");
		list.add("号");
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter("d.txt"));
			for(String  s:list){
				bw.write(s);
				bw.newLine();
				bw.flush();
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

流中读取的数据存入集合中:

public static void duru(){
		try {
			BufferedReader br = new BufferedReader(new FileReader("d.txt"));
			ArrayList<String> list = new ArrayList<String>();
			String line = null;
			while((line=br.readLine())!=null){
				list.add(line);
			}
			System.out.println(list);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

文本文件中存了几个名字,用程序随机获取一个人的名字:

--先将流中数据存入集合中,再用random 获取

public static void huoqu(){
		try {
			BufferedReader br = new BufferedReader(new FileReader("d.txt"));
			ArrayList<String> list = new ArrayList<String>();
			String line = null;
			while((line=br.readLine())!=null){
				list.add(line);
			}
			System.out.println(list.get((int) (Math.random()*(list.size()))));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值