package tech.nevets.tvpn; import javax.swing.*; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class LogOutputStream extends OutputStream { private JTextArea textArea; private FileOutputStream fileOut; private final char[] buf = new char[4096]; private int pointer = 0; public LogOutputStream() { try { this.fileOut = new FileOutputStream(Utils.APP_DIR + "/log.txt"); } catch (IOException e) { System.err.println("Error Creating log stream: " + e.getMessage()); this.fileOut = null; } } public void initLogTab(JTextArea textArea) { this.textArea = textArea; } @Override public void write(int b) throws IOException { fileOut.write(b); if ((char) b == '\n') { flush(); pointer = 0; return; } buf[pointer] = (char) b; pointer++; } @Override public void flush() { StringBuilder sb = new StringBuilder(pointer + 1); for (int i = 0; i < pointer; i++) { sb.append(buf[i]); } if (textArea != null) { textArea.append(sb.toString()); } } }