Java Tutorial/File/IO redirection

Материал из Java эксперт
Перейти к: навигация, поиск

Demonstrates standard I/O redirection

   <source lang="java">

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; public class MainClass {

 public static void main(String[] args) throws IOException {
   PrintStream console = System.out;
   BufferedInputStream in = new BufferedInputStream(new FileInputStream("Redirecting.java"));
   PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("test.out")));
   System.setIn(in);
   System.setOut(out);
   System.setErr(out);
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   String s;
   while ((s = br.readLine()) != null)
     System.out.println(s);
   out.close(); 
   System.setOut(console);
 }

}</source>





Redirecting Standard Output, and Error

   <source lang="java">

import java.io.FileOutputStream; import java.io.PrintStream; public class Main {

 public static void main(String[] argv) throws Exception {
   System.setOut(new LogStream(System.out, new PrintStream(new FileOutputStream("out.log"))));
   System.setErr(new LogStream(System.err, new PrintStream(new FileOutputStream("err.log"))));
   
   System.out.println("output");
   System.err.println("error");
 }

} class LogStream extends PrintStream {

 PrintStream out;
 public LogStream(PrintStream out1, PrintStream out2) {
   super(out1);
   this.out = out2;
 }
 public void write(byte buf[], int off, int len) {
   try {
     super.write(buf, off, len);
     out.write(buf, off, len);
   } catch (Exception e) {
   }
 }
 public void flush() {
   super.flush();
   out.flush();
 }

}</source>





Redirect standard error

   <source lang="java">

import java.io.FileOutputStream; import java.io.PrintStream; public class Main {

 public static void main(String[] args) throws Exception {
   System.setErr(new PrintStream(new FileOutputStream("system_err.txt")));
   String nullString = null;
   nullString = nullString.toUpperCase();
 }

}</source>





Redirect standard output

   <source lang="java">

import java.io.FileOutputStream; import java.io.PrintStream; public class Main {

 public static void main(String[] args) throws Exception {
   System.setOut(new PrintStream(new FileOutputStream("system_out.txt")));
   System.out.println("sent to the file system_out.txt");
 }

}</source>





Redirect standard output to a file

   <source lang="java">

import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.PrintStream; public class Main {

 public static void main(String[] argv) throws Exception {
   System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("output.dat"))));
 }

}</source>





Replace standard output and error with a print stream, output to both the console and to a file.

   <source lang="java">

import java.io.FileOutputStream; import java.io.PrintStream; public class Main {

 public static void main(String[] argv) throws Exception {
   System.setOut(new LogStream(System.out, new PrintStream(new FileOutputStream("out.log"))));
   System.setErr(new LogStream(System.err, new PrintStream(new FileOutputStream("err.log"))));
   
   System.out.println("output");
   System.err.println("error");
 }

} class LogStream extends PrintStream {

 PrintStream out;
 public LogStream(PrintStream out1, PrintStream out2) {
   super(out1);
   this.out = out2;
 }
 public void write(byte buf[], int off, int len) {
   try {
     super.write(buf, off, len);
     out.write(buf, off, len);
   } catch (Exception e) {
   }
 }
 public void flush() {
   super.flush();
   out.flush();
 }

}</source>





Standard Err and Output Windows

   <source lang="java">

import java.io.OutputStream; import java.io.PrintStream; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; public class StdErrOutWindows {

 JTextArea outArea = new JTextArea(20, 50), errArea = new JTextArea(20, 50);;
 public StdErrOutWindows() {
   JScrollPane pain = new JScrollPane(outArea);
   JFrame outFrame = new JFrame("out");
   outFrame.getContentPane().add(pain);
   outFrame.setVisible(true);
   
   pain = new JScrollPane(errArea);
   JFrame errFrame = new JFrame("err");
   errFrame.getContentPane().add(pain);
   errFrame.setLocation(errFrame.getLocation().x + 20, errFrame.getLocation().y + 20);
   errFrame.setVisible(true);
   System.setOut(new PrintStream(new JTextAreaOutputStream(outArea)));
   System.setErr(new PrintStream(new JTextAreaOutputStream(errArea)));
 }
 public static void main(String[] args) {
   new StdErrOutWindows();
   System.out.println("test to out");
   try {
     throw new Exception("Test exception");
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
 public class JTextAreaOutputStream extends OutputStream {
   JTextArea ta;
   public JTextAreaOutputStream(JTextArea t) {
     super();
     ta = t;
   }
   public void write(int i) {
     ta.append(Character.toString((char)i));
   }
   public void write(char[] buf, int off, int len) {
     String s = new String(buf, off, len);
     ta.append(s);
   }
 }

}</source>