echo “Hello there!” | tee a.out
Isso vai imprimir “Hello there” no terminal e para o arquivo a.out
Este comando eh extremamente util quando por exemplo voce vai rodar um programa e quer visualizar no terminal o que esta acontecendo mas tambem quer guardar um log do output. Pois bem, estava esses dias vasculando o projeto Apache commons (http://commons.apache.org/) e usando a API commons.io descobri que podemos fazer a mesma coisa que fazemos no unix com o comando tee, ou seja, direcionar o output dos nossos programas para dois lugares diferentes. Aqui vai o exemplo que eu fiz pra demonstrar como usar a classe TeeOutputStream.
import org.apache.commons.io.output.*;
import java.io.*;
public class TestTee {
public static void main(String[] args) {
try {
TeeOutputStream _tee = new TeeOutputStream(
new FileOutputStream("test.txt"), System.out);
PrintStream _ps = new PrintStream(_tee);
_ps.println("Hello! Printing in the file and in the Terminal");
_ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Acho que o programa eh auto-explicativo, mas vamos la:
O construtor da class TeeOutputStream eh TeeOutputStream(OutputStream out, OutputStream branch) sabendo disso eu passei no primeiro argumento FileOutputStream que eh uma classe derivada de OutputStream entao eh totalmente valida passa ser um parametro. E o segundo argumento System.out que eh um OutputStream. Pra facilitar a vida na hora de imprimir eu preferi criar um objeto do tipo PrintStream e passar como parametro o nosso TeeOutputStream.
O resultado do programa vai ser a frase “Printing in the file and in the Terminal” no terminal e no arquivo test.txt
Deem uma olhada no site do projeto apache commons, tem muita coisa interessante por la.
Ate+

1 comments:
See Please Here
Post a Comment