javaSE(15)(缓冲流、转换流和标准系统I0流)
来源:互联网 发布:泗洪网络问政 编辑:程序博客网 时间:2024/05/16 07:48
字节缓冲流:package zz.itheima.bufferdstream;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;public class TestBufferedInputStream { public static void main(String[] args) { //测试字节缓冲流 /*java.io.BufferedInputStream 字节缓冲流(读) public BufferedInputStream(InputStream in) 默认缓冲区是8k public BufferedInputStream(InputStream out, int size)可以自己指定缓冲区大小,单位字节 public int read() public int read(byte[] b) public void close()*/ //架管道 try { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\2.txt")); } catch (FileNotFoundException e) { e.printStackTrace(); } }}字节缓冲流(写):package zz.itheima.bufferdstream;import java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.io.IOException;public class TestBufferedOutputStream { public static void main(String[] args) { //测试字节缓冲林(写) /*java.io.BufferedOutputStream 字节缓冲流(写) * public BufferedOutputStream(OutputStream out) 默认大小是8k public BufferedOutputStream(OutputStream out, int size)可以自己指定缓冲区大小,单位字节 public void write(int b) 参数是ASCII表中的码值,不是普通数字 public void write(byte[] b) public void flush() public void close() */ BufferedOutputStream bos = null; try { bos = new BufferedOutputStream(new FileOutputStream("E:\\2.txt"), 1024*16); for (int i = 0; i <1024*16 + 1; i++) { bos.write(97); } } catch (Exception e) { e.printStackTrace(); } finally{ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } }}字符缓冲流1:package zz.itheima.bufferdstream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class TestBufferedWriter { public static void main(String[] args) { //测试字符缓冲流 //架管道 BufferedReader br = null; BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter("E:\\2.txt")); bw.write("hel\r\nlo"); bw.write("world"); bw.flush(); br = new BufferedReader(new FileReader("E:\\2.txt")); String val = br.readLine(); System.out.println(val); String val1 = br.readLine(); System.out.println(val1); String val2 = br.readLine(); System.out.println(val2); } catch (Exception e) { e.printStackTrace(); } finally{ try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 测试结果: * hel loworld null * * */}字符缓冲流2:package zz.itheima.bufferdstream;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class TestBufferedWriter2 { public static void main(String[] args) { //测试字符缓冲流 BufferedWriter bw = null; try { int size = 1024*2; bw = new BufferedWriter(new FileWriter("E:\\demo.txt"),size); char[] temp = new char[size]; for (int i = 0; i < size; i++) { temp[i] = 'a'; } bw.write(temp); } catch (IOException e) { e.printStackTrace(); } finally{ try { bw.flush(); bw.close(); } catch (IOException e) { e.printStackTrace(); } } }}使用字节缓冲流(拷贝一个视频文件):package zz.itheima.bufferdstream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class BufferedCopy { public static void copy(){ long begin = System.currentTimeMillis(); //使用字节缓冲流(拷贝一个视频文件) BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(new FileInputStream("E:\\1.avi")); bos = new BufferedOutputStream(new FileOutputStream("D:\\1.avi")); byte[] temp = new byte[1024*1024*2]; while (true) { int res = bis.read(temp); if (res==-1) { break; }else { bos.write(temp, 0, res); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { bos.close(); bis.close(); } catch (IOException e) { e.printStackTrace(); } } long end = System.currentTimeMillis(); System.out.println(end - begin); } public static void main(String[] args) { copy(); }}测试字符编码:package zz.itheima.bufferdstream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class TestEncoding { public static void main(String[] args) throws Exception { //测试utf-8编码的文本文件的读写 //在工程中新建一个文本文件 //点右键通过属性改为utf-8 //录入几个汉字 //FileReader默认采用GBK编码,因此对于utf-8格式的文本会出现乱码 FileReader fr = null; File f = null; try { f = new File("demo.txt"); fr = new FileReader(f); char[] temp = new char[(char)f.length()]; fr.read(temp); System.out.println(new String(temp)); } catch (FileNotFoundException e) { e.printStackTrace(); } finally{ try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } //InputStreamReader可以自己设置编码,格式要与文本文件的编码格式一致即可,不会出现乱码 InputStreamReader isr = null; try { isr = new InputStreamReader(new FileInputStream(f),"utf-8"); char[] temp = new char[(int)f.length()]; isr.read(temp); System.out.println(new String(temp)); } catch (Exception e) { e.printStackTrace(); } finally{ isr.close(); } //FileWriter类默认使用GBK进行编码,如果文件是utf-8格式的,就会出现乱码 FileWriter fw=new FileWriter(f); fw.write("张三"); fw.close(); //OutputStreamWriter类可以自己指定编码,需要跟文件的编码保持一致,就不会出现乱码 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(f),"utf-8"); osw.write("张三"); osw.close(); }}对字符串进行转码:package zz.itheima.bufferdstream;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;public class TestStringEncoding { public static void main(String[] args) throws Exception{ //对某个字符串进行转码 //使用基本字节输入流读取utf-8格式的文本 File f = new File("demo.txt"); FileInputStream fis = new FileInputStream(f); byte[] temp = new byte[(int)f.length()]; fis.read(temp); System.out.println(new String(temp,"utf-8")); fis.close(); //使用基本字符输入流读取utf-8格式的文本 File f1=new File("demo.txt"); FileReader fr=new FileReader(f1); char[] t=new char[(int)f.length()]; fr.read(t); String val=new String(t); System.out.println(new String(val.getBytes(),"utf-8")); fr.close(); //如果得到的字符串乱码怎么处理 String s = "美好!"; System.out.println(new String(s.getBytes(),"utf-8")); }}系统标准的输入输出流:package zz.itheima.bufferdstream;import java.io.InputStream;import java.io.PrintStream;public class TestSystem { //系统标准的输入输出流 public static void main(String[] args) throws Exception{ // System.in System.out, InputStream is = System.in; int val = is.read(); PrintStream ps = System.out; ps.write(val); ps.flush(); ps.close(); }}例子一:package zz.itheima.bufferdstream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.util.Scanner;public class Demo1 { public static void main(String[] args) throws Exception{ /*用户在控制台循环录入姓名和年龄,然后存到一个文本文件中,一人占一行, 直到quit退出,然后把文件中的每一行都输出到控制台(字符缓冲流特有方法)*/ BufferedReader br = new BufferedReader(new FileReader("E:\\2.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\2.txt")); String flag ; do { Scanner sc = new Scanner(System.in); System.err.println("请输入姓名"); String name = sc.nextLine(); System.out.println("请输入年龄:"); String age = sc.nextLine(); bw.write(name +"\t" +age); bw.newLine(); System.out.println("是否继续?"); flag = sc.next(); } while (flag.equalsIgnoreCase("y")); bw.close(); while (true) { String res = br.readLine(); if (res==null) { break; }else { bw.write(res); } } }}例子二:package zz.itheima.bufferdstream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;public class Demo2 { public static void main(String[] args)throws Exception { //练习:读取一个Java源文件,输出代码有多少行?然后把该文件的代码写入到另一个文本文件中 BufferedReader br = null; BufferedWriter bw = null; int count = 0; try { br = new BufferedReader(new FileReader("D:\\1.java")); bw = new BufferedWriter(new FileWriter("E:\\2.txt")); while (true) { String val = br.readLine(); if (val==null) { break; }else { count++; bw.write(val); bw.newLine(); } } } catch (Exception e) { e.printStackTrace(); } finally{ bw.close(); bw.close(); } System.out.println(count); }}
0 0
- javaSE(15)(缓冲流、转换流和标准系统I0流)
- I0流1
- java ---i0---字节流
- java 缓冲流和转换流
- JavaIO 总结笔记<四> 缓冲流和转换流
- JavaSE---IO流(字节流、转换流、字符流)
- io 流(2 缓冲流,转换流,数据流)
- Java之IO(二)缓冲流、转换流
- (21)io流缓冲技术&转换流
- 【JavaSE学习笔记】IO流05_字符缓冲输出流BufferedWriter、字符缓冲输入流BufferedReader
- 缓冲流和包装流
- 缓冲流和对象流
- 也谈构建自己的标准流缓冲 【操作Pipe的流缓冲】
- 缓冲流BIS和BOS
- Linux Advance--打印标准IO流缓冲状态信息
- JavaSE DataInputStream和DataOutputStream流
- 缓冲流
- 缓冲流
- 学习使用:before和:after伪元素
- 可阻塞的Cache—BlockingCache
- 正则表达式备忘录
- js之模态、非模态框
- Android之DatePicker使用
- javaSE(15)(缓冲流、转换流和标准系统I0流)
- 利用json和ajax模拟获取最新资讯
- 慢慢(每次一度)转向目标
- Java设计模式之适配器Adapter
- Socket编程(一)TCP传输文件
- ipad标准参数
- “当前不会命中断点。源代码与原始版本不同”解决
- UML——活动图
- 2015-12-01