Руководство Java PrintStream
1. PrintStream
PrintStream - это подкласс FilterOutputStream, который используется для печати данных в управляемый им OutputStream. Он также рассматривается как инструмент для добавления функциональности (functionality) для этого OutputStream.
- ByteArrayOutputStream
- FileOutputStream
- FilterOutputStream
- ObjectOutputStream
- PipedOutputStream
- BufferedOutputStream
- DataOutputStream
- OutputStream
- CheckedOutputStream
- CipherOutputStream
- DeflaterOutputStream
- DigestOutputStream
- InflaterOutputStream
Характеристики of PrintStream:
Все методы of PrintStream не создают исключений I/O. Чтобы проверить, возникает ли исключение, вы можете вызвать метод checkError().
При желании, PrintStream способен автоматически сбрасывать (flush), это означает, что метод flush() будет вызван сразу после вызова println(..) или при печати текста, содержащего символ '\n'.
Все символы, напечатанные PrintStream, преобразуются в bytes с использованием заданной encoding или charset или системы по умолчанию, если не указано. Класс PrintWriter следует использовать в тех случаях, когда требуется писать символы вместо byte.
System.out
System.out - это очень распространенный и знакомый объект PrintStream, который используется для печати данных на экране Console. Это позволяет вам вспомнить классический код, который вы написали, когда начали изучать Java:
System.out.println("Hello World!");
Смотрите больше:PrintWriter - это класс, аналогичный PrintStream, он используется для печати данных во внутренний Writer или OutputStream, которым он управляет.
2. PrintStream Constructors
Constructors для создания объекта PrintStream без автоматической очистки (flush):
public PrintStream(OutputStream out)
public PrintStream(File file) throws FileNotFoundException
public PrintStream(File file, Charset charset) throws IOException
public PrintStream(File file, String csn)
throws FileNotFoundException, UnsupportedEncodingException
public PrintStream(String fileName) throws FileNotFoundException
public PrintStream(String fileName, Charset charset) throws IOException
public PrintStream(String fileName, String csn)
throws FileNotFoundException, UnsupportedEncodingException
Constructors для создания объекта PrintStream с опцией автоматической очистки (flush):
public PrintStream(OutputStream out, boolean autoFlush)
public PrintStream(OutputStream out, boolean autoFlush, Charset charset)
public PrintStream(OutputStream out, boolean autoFlush, String encoding)
throws UnsupportedEncodingException
Constructors создают PrintStream для записи данных в OutputStream:
public PrintStream(OutputStream out)
public PrintStream(OutputStream out, boolean autoFlush)
public PrintStream(OutputStream out, boolean autoFlush, String encoding)
throws UnsupportedEncodingException
public PrintStream(OutputStream out, boolean autoFlush, Charset charset)
Сonstructors создают PrintStream для записи данных в файл:
public PrintStream(File file)
public PrintStream(File file, Charset charset) throws IOException
public PrintStream(File file, String csn)
throws FileNotFoundException, UnsupportedEncodingException
public PrintStream(String fileName) throws FileNotFoundException
public PrintStream(String fileName, Charset charset) throws IOException
public PrintStream(String fileName, String csn)
throws FileNotFoundException, UnsupportedEncodingException
3. PrintStream Methods
Методы of PrintStream:
public boolean checkError()
protected void setError()
protected void clearError()
public void print(boolean b)
public void print(char c)
public void print(int i)
public void print(long l)
public void print(float f)
public void print(double d)
public void print(char[] s)
public void print(String s)
public void print(Object obj)
public void println()
public void println(boolean x)
public void println(char x)
public void println(int x)
public void println(long x)
public void println(float x)
public void println(double x)
public void println(char[] x)
public void println(String x)
public void println(Object x)
public PrintStream printf(String format, Object... args)
public PrintStream printf(Locale l, String format, Object... args)
public PrintStream format(String format, Object... args)
public PrintStream format(Locale l, String format, Object... args)
public PrintStream append(CharSequence csq)
public PrintStream append(CharSequence csq, int start, int end)
public PrintStream append(char c)
Другие методы переопределяют (override) методы родительского класса и не создают исключения:
public void write(int b)
public void write(byte[] b)
public void write(byte[] b, int off, int len)
public void flush()
public void close()
4. Examples
Получите трассировку стека (stack trace) из Exception.
GetStackTraceEx.java
package org.o7planning.printstream.ex;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
public class GetStackTraceEx {
public static void main(String[] args) {
try {
int a = 100 / 0; // Exception occur here
} catch (Exception e) {
String s = getStackTrace(e);
System.err.println(s);
}
}
public static String getStackTrace(Throwable t) {
OutputStream baos = new ByteArrayOutputStream();
// Create PrintStream via PrintStream(OutputStream) constructor.
PrintStream pw = new PrintStream(baos);
// Call method: Throwable.printStackTrace(PrintStream)
t.printStackTrace(pw);
pw.close();
String s = baos.toString();
return s;
}
}
Output:
java.lang.ArithmeticException: / by zero
at org.o7planning.printstream.ex.GetStackTraceEx.main(GetStackTraceEx.java:11)
5. checkError()
Метод checkError() возвращает состояние ошибки этого PrintStream. Кроме того, метод flush() также вызывается, если PrintStream не был закрыт.
public boolean checkError()
Примечание: Все методы of PrintStream не вызывают исключение IOException, но как только в методах возникает исключение IOException, его статус - ошибка.
Это состояние ошибки of PrintStream очищается только при вызове функции clearError(), но это protected метод. Вы можете написать класс, расширяющий PrintStream, и переопределить (override) этот метод, если хотите его использовать (см. Пример ниже).
MyPrintStream.java
package org.o7planning.printstream.ex;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class MyPrintStream extends PrintStream {
public MyPrintStream(File file) throws FileNotFoundException {
super(file);
}
@Override
public void clearError() {
super.clearError(); // Call protected method.
}
}
Например: Используйте метод checkError() для проверки состояния ошибки of PrintStream:
PrintStream_checkError_ex1.java
package org.o7planning.printstream.ex;
import java.io.File;
public class PrintStream_checkError_ex1 {
// Windows: C:/SomeFolder/logFile.txt
private static final String logFilePath = "/Volumes/Data/test/logFile.txt";
public static void main(String[] args) throws Exception {
File logFile = new File(logFilePath);
MyPrintStream mps = new MyPrintStream(logFile);
int errorCount = 0;
while (true) {
// Write log..
mps.println("Some Log..");
Thread.sleep(1000);
// Check if IOException happened.
if (mps.checkError()) {
errorCount++;
mps.clearError();
if (errorCount > 10) {
sendAlertEmail();
break;
}
}
}
mps.close();
}
private static void sendAlertEmail() {
System.out.println("There is a problem in the Log system.");
}
}
6. print(..) *
Метод print(..) используется для печати примитивного значения.
public void print(boolean b)
public void print(char c)
public void print(int i)
public void print(long l)
public void print(float f)
public void print(double d)
public void print(char[] s)
public void print(String s)
Например:
PrintStream_print_primitive_ex1.java
// System.out is an instance of PrintStream.
PrintStream ps = System.out;
ps.print(true);
ps.println();
ps.print(new char[] { 'a', 'b', 'c' });
ps.println();
ps.print("Text");
Output:
true
abc
Text
7. print(Object)
Преобразуйте объект в String с помощью метода String.valueOf(Object) и распечатайте результат.
public void print(Object obj) {
this.write(String.valueOf(obj));
}
Например:
PrintStream_print_object_ex1.java
// System.out is an instance of PrintStream.
PrintStream ps = System.out;
Object obj1 = null;
ps.print(obj1);
ps.println();
Object obj2 = new Socket();
ps.print(obj2);
ps.println();
Object obj3 = Arrays.asList("One", "Two", "Three");
ps.print(obj3);
Output:
null
Socket[unconnected]
[One, Two, Three]
8. println()
Выведите символ новой строки. Метод flush() также вызывается, если этот PrintStream имеет режим автоматической очистки (auto flush).
public void println() {
print('\n');
if(autoFlush) this.flush();
}
9. println(..) *
Метод println(..) используется для печати примитивного значения и символа новой строки. Метод flush() также вызывается, если этот PrintStream имеет режим автоматической очистки (auto flush).
public void println(boolean x)
public void println(char x)
public void println(int x)
public void println(long x)
public void println(float x)
public void println(double x)
public void println(char[] x)
public void println(String x)
Например:
PrintStream_println_primitive_ex1.java
// System.out is an instance of PrintStream.
PrintStream ps = System.out;
ps.println(true);
ps.println(new char[] { 'a', 'b', 'c' });
ps.println("Text");
Output:
true
abc
Text
10. println(Object)
Преобразуйте объект в String с помощью метода String.valueOf(Object), затем выведите результат и символ новой строки. Метод flush() также вызывается, если этот PrintStream имеет режим автоматической очистки (auto flush). Этот метод работает так же, как вызов print(Object), а затем println().
public void println(Object x) {
this.write(String.valueOf(x));
this.write("\n");
if(this.autoFlush) this.flush();
}
Например:
PrintStream_println_object_ex1.java
// System.out is an instance of PrintStream.
PrintStream ps = System.out;
Object obj1 = null;
ps.println(obj1);
Object obj2 = new Socket();
ps.println(obj2);
Object obj3 = Arrays.asList("One", "Two", "Three");
ps.println(obj3);
Output:
null
Socket[unconnected]
[One, Two, Three]
11. printf(..) *
Удобный метод для записи отформатированной строки в этот PrintStream с использованием отформатированной строки формата и указанных аргументов.
public PrintStream printf(String format, Object... args)
public PrintStream printf(Locale locale, String format, Object... args)
Этот метод работает аналогично приведенному ниже коду:
String result = String.format(format, args);
printStream.print(result);
// Or:
String result = String.format(locale, format, args);
printStream.print(result);
Смотрите также:
12. format(..) *
Этот метод работает так же, как метод printf(..).
public PrintStream format(String format, Object... args)
public PrintStream format(Locale locale, String format, Object... args)
Это работает так, как показано в приведенном ниже коде:
String result = String.format(format, args);
printStream.print(result);
// Or:
String result = String.format(locale, format, args);
printStream.print(result);
Смотрите также:
13. append(..) *
Методы append(..) работают так же, как методы print(..). Единственное отличие заключается в том, что он возвращает этот PrintStream, поэтому вы можете вызвать следующий метод next вместо того, чтобы заканчиваться точкой с запятой ( ; ).
public PrintStream append(CharSequence csq)
public PrintStream append(CharSequence csq, int start, int end)
public PrintStream append(char c)
Например:
PrintStream_append_ex1.java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
ps.append("This").append(" is").append(' ').append('a').append(" Text");
ps.flush();
String text = baos.toString();
System.out.println(text);// This is a Text
Руководства Java IO
- Руководство Java CharArrayWriter
- Руководство Java FilterReader
- Руководство Java FilterWriter
- Руководство Java PrintStream
- Руководство Java BufferedReader
- Руководство Java BufferedWriter
- Руководство Java StringReader
- Руководство Java StringWriter
- Руководство Java PipedReader
- Руководство Java LineNumberReader
- Руководство Java PushbackReader
- Руководство Java PrintWriter
- Руководство Java IO Binary Streams
- Руководство Java IO Character Streams
- Руководство Java BufferedOutputStream
- Руководство Java ByteArrayOutputStream
- Руководство Java DataOutputStream
- Руководство Java PipedInputStream
- Руководство Java OutputStream
- Руководство Java ObjectOutputStream
- Руководство Java PushbackInputStream
- Руководство Java SequenceInputStream
- Руководство Java BufferedInputStream
- Руководство Java Reader
- Руководство Java Writer
- Руководство Java FileReader
- Руководство Java FileWriter
- Руководство Java CharArrayReader
- Руководство Java ByteArrayInputStream
- Руководство Java DataInputStream
- Руководство Java ObjectInputStream
- Руководство Java InputStreamReader
- Руководство Java OutputStreamWriter
- Руководство Java InputStream
- Руководство Java FileInputStream
Show More