java Print流 和 重定向

可视化编辑器,alt+1到9键,切换到工具区,tab键,选择按钮,esc键,返回编辑

public class TestIO {
 public static void main(String[] args) {
  String filename = "D:" + File.separator + "hello.txt";
  File file = new File(filename);
  
  System.out.println("标准输出 -- 控制台");
  
  try {
   //FileOutputStream fileOut = new FileOutputStream(filename);
   PrintStream prt = new PrintStream(file);
   
   System.setOut(prt);
   
   System.out.println("标准输出重定向 -- 文件");
   
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
}

1、Print流 分为PrintStream和 PrintWriter 两种
 他们表示的含义可以从他们的构造函数中看出:
 PrintStream extends FilterOutputStream:
 private PrintStream(boolean autoFlush, OutputStream out, Charset charset) {
        super(out);
        this.autoFlush = autoFlush;
        this.charOut = new OutputStreamWriter(this, charset);
        this.textOut = new BufferedWriter(charOut);
    }
    首先它是一个OutputStream的子类
    其次它是一个包裹流,在其输出字节流的基础上包裹了转换流,转换成字符输出流,然后又包裹了一层缓冲输出流
    最后他的flush功能默认是关闭的,所以需要进行开启或者手动flush.
    PrintWriter extends Writer:
    public PrintWriter(OutputStream out, boolean autoFlush) {
        this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);

// save print stream for error propagation
        if (out instanceof java.io.PrintStream) {
            psOut = (PrintStream) out;
        }
    }
    可以看出PrintWriter对于字节流的处理和PrintStream相同,不过它也可以用Writer流作为参数。
    public PrintWriter(Writer out,boolean autoFlush) {
        super(out);
        this.out = out;
        this.autoFlush = autoFlush;
        lineSeparator = java.security.AccessController.doPrivileged(
            new sun.security.action.GetPropertyAction("line.separator"));
    }
   
    2、关于输出流所提供的功能(方法)对比
        - Writer :// FileWriter\CharArrayWriter
          write(int) 一个字符
          write(char[]) 一个字符数组
          write(char[],offset,len) 一个字符数组的一部分
          write(string,offset,len) 一个字符串或者它的一部分
         
        - OutputStream
          write(int) 一个字节
          write(byte[]) 一个字节数组
          write(byte[],offset,len) 一个字节数组的一部分
         
        - DataOutputStream
          在一个OutputStream的基础上提供以下功能
          writeInt(int) 把一个int型数据按照字节输出。100 --> 0x 00 00 00 64
          writeLong(long) 把一个long型数据按照字节输出。
       
        - PrintStream
          首先它继承自OutputStream,是一个字节流
          其次它以字符形式进行输出。也就是说它会自动按照指定的编码把字节中的数据转换为字符,然后进行输出。集合了转换和缓冲输出的功能,参考上面的构造函数
          最后它主要是提供了许多格式化输出功能
          write(int) 字节输出 100 --> 64
          write(byte[],offset,len) // 字节输出
          write(char[]) 字符输出
          write(string) BufferedWriter 字符输出
          print(...) 字符输出 100 --> 100
          println(...) 字符输出 ‘\r\n‘
          printf(format,...) 字符输出
         
        - PrintWriter
          它的方法和PrintStream相同。
          关于换行符,在windows下是\r\n, 而在linux下是\n,
          他们的用法基本相同

public class TestIO {

public static void main(String[] args) {
  String filename = "D:" + File.separator + "hello.txt";
  
  File file = new File(filename);
  
  
  try {
   FileOutputStream fout = new FileOutputStream(file);
   
   PrintStream prt = new PrintStream(fout);
   
   prt.write(100); // 文件中内容为64
   
   prt.close();
   fout.close();
   
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
}       
 
       Print 流通常用于标准输出和标准错误,他们默认都是在显示器上进行输出。我们可以更改他们输出到文件,这就是输出重定向,或者叫做标准输出重定向
        System.out 标准输出流
        System.err 标准错误流
       
        System.setErr()
        System.setOut()
        Test Code:

时间: 2024-11-05 11:27:16

java Print流 和 重定向的相关文章

Java IO(六)- Print流

Print流(只有输出流没有输入流) PrintWriter和PrintStream都属于输出流,分别针对于字符和字节 PrintWriter和PrintStream提供了重载的print方法 Println方法用于多种数据类型的输出 PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息 PrintWriter和PrintStream有自动flush方法 构造方法: PrintWriter(File file) Creates a new Pri

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

Java IO流详尽解析(转自 http://www.2cto.com/kf/201312/262036.html)

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别

Java IO 流

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

Java IO流详尽解析(大神之作)

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别

Java IO流详尽解析

流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流.根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符

Java IO流详尽解析(转)

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别

java 打印流PrintWriter基本操作

import java.io.*; public class PrintDemo { public static void main(String[] args) { PrintWriter writer=null; writer=new PrintWriter(System.out); String str=new String("Hello cjc!!!"); writer.print(str); writer.close(); try { writer=new PrintWrit

java web基础 --- URL重定向Filter

java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response); 服务器端转发,不改变浏览器端URL地址,常用 httpResponse.sendRedirect(uri); 浏览器端重定向,改变URL在浏览器地址栏 URLOverWriteFilter.java 1 package com.web1.util; 2 3 import j