まず、あなたはAdapterパターンを実装するためのOutputStreamインタフェースから継承したクラスを作成する必要があります
は、あなたが
MAIN
怒鳴るとして、このクラスを使用することができます(アダプタがある場合、私はまだよく分かりません)
PrintStream finalStream;
TreeOutputStream tos;
PrintStream out;
out = new PrintStream("logs.txt");
tos = new TreeOutputStream();
tos.add(out);
tos.add(System.out);
finalStream = new PrintStream(tos);
System.setOut(finalStream);
TreeOutputStream
public class TreeOutputStream extends OutputStream{
private final List<OutputStream> streams;
public void add(OutputStream os){
streams.add(os);
}
public void remove(OutputStream os){
streams.remove(os);
}
public TreeOutputStream() {
streams = new ArrayList<>();
}
@Override
public void write(int i) throws IOException {
streams.stream().forEach(strm->{
try {
strm.write(i);
} catch (IOException ex) {
Logger.getLogger(TreeOutputStream.class.getName()).log(Level.SEVERE, null, ex);
}
});
}
}すべてのストリームの上に出て、ストリームの意志ループがSystem.setOut を実行する前に自分の書き込み方法
他のライブラリにリンクされていないこのソリューションの利点 –