当前位置: 移动技术网 > IT编程>开发语言>Java > IO流 (四) ----- 转换流和标准字节输出流

IO流 (四) ----- 转换流和标准字节输出流

2020年07月17日  | 移动技术网IT编程  | 我要评论
相关文章:
  1. 《IO流 (一) ----- 基本概念和File类》
  2. 《IO流 (二) ----- 文件流》
  3. 《IO流 (三) ----- 字符流和字符缓冲流》
  4. 《IO流 (四) ----- 转换流和标准字节输出流》
  5. 《IO流 (五) ----- 对象数据的序列化和反序列化》


本篇涉及内容


  • 转换流

  • 标准字节输出流



转换流(字节转字符)


  • InputStreamReader
  • OutputStreamWriter
  1. 应用场景:构造BufferedReader/BufferedWriter时,其构造方法中只能传入字符流(Reader/Writer),我们现在只有一个字节流FileInputStream/FileOutputStream,则需要通过转换流先把字节流转换为字符流。

  2. 代码实现:

         BufferedReader br = null;
         BufferedWriter bw = null;
    
         try {
             
             FileInputStream fis = new FileInputStream("Test/originTextFile.txt");
             FileOutputStream fos = new FileOutputStream("Test/targetTextFile.txt");
             
             br = new BufferedReader(new InputStreamReader(fis));
             bw = new BufferedWriter(new OutputStreamWriter(fos));
             
    
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } finally {
             if (br != null) {
                 try {
                     //只用关闭最外层流
                     br.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
    
             if (bw != null) {
                 try {
                     //只关闭最外层流
                     bw.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
    


标准字节输出流PrintStream


我们先来看一下System.out.println()这段代码

可以看见System.out返回了一个PrintStream对象,因此我们可以推断println()这个方法是PrintStream类中的方法,下面我们来创建一个PrintStream对象试试。

PrintStream的构造方法有多种实现,这里我们通过文件字节输出流来构造PrintStream对象,并且调用println()方法输出一段文字到文件中。


我们知道System.out.println()这段代码的作用的向控制台输出,那么我们可以改变它的输出方向吗?当然可以!通过System.setOut()方法实现。

需要传入一个PrintStream对象进去。

现在打印出来的字符串不再出现在控制台中,而是出现在了log.txt文件中。


下面我们通过上述方法来实现一个Logger工具类。

public class Logger {
    public static void log(String msg) {

        try {
            //指向一个日志文件
            PrintStream ps = new PrintStream(new FileOutputStream("Test/log.txt",true));
            //改变输出方向
            System.setOut(ps);
            //日期当前时间
            Date nowTime = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            String strTime = sdf.format(nowTime);

            System.out.println(strTime + ": " + msg);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}


本文地址:https://blog.csdn.net/k909397116/article/details/107363433

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网