printstream.java
来自「gcc3.2.1源代码」· Java 代码 · 共 303 行
JAVA
303 行
// PrintStream.java - Print string representations/* Copyright (C) 1998, 1999, 2001 Free Software Foundation This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. */package java.io;import gnu.gcj.convert.UnicodeToBytes;/** * @author Tom Tromey <tromey@cygnus.com> * @date September 24, 1998 *//* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 * "The Java Language Specification", ISBN 0-201-63451-1 * Status: Believed complete and correct to 1.3 */public class PrintStream extends FilterOutputStream{ /* Notice the implementation is quite similar to OutputStreamWriter. * This leads to some minor duplication, because neither inherits * from the other, and we want to maximize performance. */ public boolean checkError () { flush(); return error; } public void close () { try { flush(); out.close(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } public void flush () { try { out.flush(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } private synchronized void print (String str, boolean println) { try { writeChars(str, 0, str.length()); if (println) writeChars(line_separator, 0, line_separator.length); if (auto_flush) flush(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } private synchronized void print (char[] chars, int pos, int len, boolean println) { try { writeChars(chars, pos, len); if (println) writeChars(line_separator, 0, line_separator.length); if (auto_flush) flush(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } private void writeChars(char[] buf, int offset, int count) throws IOException { while (count > 0) { converter.setOutput(work_bytes, 0); int converted = converter.write(buf, offset, count); offset += converted; count -= converted; out.write(work_bytes, 0, converter.count); } } private void writeChars(String str, int offset, int count) throws IOException { while (count > 0) { converter.setOutput(work_bytes, 0); int converted = converter.write(str, offset, count, work); offset += converted; count -= converted; out.write(work_bytes, 0, converter.count); } } public void print (boolean bool) { print(String.valueOf(bool), false); } public void print (int inum) { print(String.valueOf(inum), false); } public void print (long lnum) { print(String.valueOf(lnum), false); } public void print (float fnum) { print(String.valueOf(fnum), false); } public void print (double dnum) { print(String.valueOf(dnum), false); } public void print (Object obj) { print(obj == null ? "null" : obj.toString(), false); } public void print (String str) { print(str == null ? "null" : str, false); } public synchronized void print (char ch) { work[0] = ch; print(work, 0, 1, false); } public void print (char[] charArray) { print(charArray, 0, charArray.length, false); } public void println () { print(line_separator, 0, line_separator.length, false); } public void println (boolean bool) { print(String.valueOf(bool), true); } public void println (int inum) { print(String.valueOf(inum), true); } public void println (long lnum) { print(String.valueOf(lnum), true); } public void println (float fnum) { print(String.valueOf(fnum), true); } public void println (double dnum) { print(String.valueOf(dnum), true); } public void println (Object obj) { print(obj == null ? "null" : obj.toString(), true); } public void println (String str) { print (str == null ? "null" : str, true); } public synchronized void println (char ch) { work[0] = ch; print(work, 0, 1, true); } public void println (char[] charArray) { print(charArray, 0, charArray.length, true); } public PrintStream (OutputStream out) { this(out, false); } public PrintStream (OutputStream out, boolean af) { super(out); converter = UnicodeToBytes.getDefaultEncoder(); error = false; auto_flush = af; } protected void setError () { error = true; } public void write (int oneByte) { try { out.write(oneByte); if (auto_flush && oneByte == '\n') flush(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } public void write (byte[] buffer, int offset, int count) { try { out.write(buffer, offset, count); if (auto_flush) flush(); } catch (InterruptedIOException iioe) { Thread.currentThread().interrupt(); } catch (IOException e) { setError (); } } UnicodeToBytes converter; // Work buffer of characters for converter. char[] work = new char[100]; // Work buffer of bytes where we temporarily keep converter output. byte[] work_bytes = new byte[100]; // True if error occurred. private boolean error; // True if auto-flush. private boolean auto_flush; // Line separator string. private static final char[] line_separator = System.getProperty("line.separator").toCharArray();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?