黑马第19天练习 练习:将一个文本文件打印到控制台上,要按照以上格式自己完成3个明确。

来源:互联网 发布:3 *3矩阵的计算方法 编辑:程序博客网 时间:2024/04/28 22:04

import java.io.*;
import java.util.*;

//练习:将一个文本文件打印到控制台上,要按照以上格式自己完成3个明确。
class ReadFileToConsole
{
 public static void main(String[] args) throws IOException
 {
  //1.源:输入流,InputStream Reader  目的:输出流,OutputStream Writer。
  //2.操作的数据是否在纯文本? 是:字符流 不是:字节流。
  //3.当体系明确了后,要明确要使用哪个具体的对象.通过设备来进行区分:源设备(内存,硬盘,键盘) 目的设备(内存,硬盘,控制台)

  //步骤:
  /**
   源:因为是源,所以使用读取流。InputStream或者Reader
    是不是操作文本文件?是!这时就可以选择Reader,这样就明确体系了。
   目的:因为是目的,所以使用写入流。OutputStream或者Writer
    是不是操作文本文件?不是!这时就可以选择OutputStream,这样就明确体系了。

   接下来明确要使用该体系的哪个对象。
   明确设备:
   源:硬盘上的一个文件,Reader体系中,可以操作文件的对象是 FileReader
   FileReader fr = new FileReader("stysteminfo.txt");
   
   是否需要提高效率吗?要,加入Reader体系中的BufferedReader
   BufferedReader br = new BufferedReader(fr);

   目的:控制台,OutputStream体系中,可以操作控制台的是PrintStream
   PrintStream ps = new PrintStream(System.out);

   要考虑到字符编码,防止中文乱码吗?要!所以需要用字符流对象通向字节流对象的转换
   OutputStreamWriter osw   = new OutputStreamWriter(ps,"GBK");

   是否需要提高效率吗?要,加入Writer体系中的BufferedWriter
   BufferedWriter bw = new BufferedWriter(osw);
   
  */
  BufferedReader br  = new BufferedReader(new FileReader("1919.txt"));
  OutputStreamWriter osw = new OutputStreamWriter(new PrintStream(System.out),"GBK");
  BufferedWriter bw  = new BufferedWriter(osw);

  char[] buf = new char[1024];
  int len = 0;
  while((len=br.read(buf))!=-1) {
   bw.write(buf, 0, len);
  }
  
/**
  String line = null;
  while((line=br.readLine())!=null) {
   bw.write(line);
   bw.newLine();
  }
*/

// int ch=0;

//  while((ch=br.read())!=-1){
//   bw.write(ch);
//  }

  bw.close();
  br.close();
 }
}