PrintWriterpublic class PrintWriter extends Writer Prints formatted representations of objects to a text-output stream. This
class implements all of the print methods found in {@link
PrintStream}. It does not contain methods for writing raw bytes, for which
a program should use unencoded byte streams.
Unlike the {@link PrintStream} class, if automatic flushing is enabled
it will be done only when one of the println, printf, or
format methods is invoked, rather than whenever a newline character
happens to be output. These methods use the platform's own notion of line
separator rather than the newline character.
Methods in this class never throw I/O exceptions, although some of its
constructors may. The client may inquire as to whether any errors have
occurred by invoking {@link #checkError checkError()}. |
Fields Summary |
---|
protected Writer | outThe underlying character-output stream of this
PrintWriter . | private boolean | autoFlush | private boolean | trouble | private Formatter | formatter | private PrintStream | psOut | private String | lineSeparatorLine separator string. This is the value of the line.separator
property at the moment that the stream was created. |
Constructors Summary |
---|
public PrintWriter(Writer out)Creates a new PrintWriter, without automatic line flushing.
this(out, false);
| public PrintWriter(Writer out, boolean autoFlush)Creates a new PrintWriter.
super(out);
this.out = out;
this.autoFlush = autoFlush;
lineSeparator = (String) java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));
| public PrintWriter(OutputStream out)Creates a new PrintWriter, without automatic line flushing, from an
existing OutputStream. This convenience constructor creates the
necessary intermediate OutputStreamWriter, which will convert characters
into bytes using the default character encoding.
this(out, false);
| public PrintWriter(OutputStream out, boolean autoFlush)Creates a new PrintWriter from an existing OutputStream. This
convenience constructor creates the necessary intermediate
OutputStreamWriter, which will convert characters into bytes using the
default character encoding.
this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);
// save print stream for error propagation
if (out instanceof java.io.PrintStream) {
psOut = (PrintStream) out;
}
| public PrintWriter(String fileName)Creates a new PrintWriter, without automatic line flushing, with the
specified file name. This convenience constructor creates the necessary
intermediate {@link java.io.OutputStreamWriter OutputStreamWriter},
which will encode characters using the {@linkplain
java.nio.charset.Charset#defaultCharset() default charset} for this
instance of the Java virtual machine.
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))),
false);
| public PrintWriter(String fileName, String csn)Creates a new PrintWriter, without automatic line flushing, with the
specified file name and charset. This convenience constructor creates
the necessary intermediate {@link java.io.OutputStreamWriter
OutputStreamWriter}, which will encode characters using the provided
charset.
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), csn)),
false);
| public PrintWriter(File file)Creates a new PrintWriter, without automatic line flushing, with the
specified file. This convenience constructor creates the necessary
intermediate {@link java.io.OutputStreamWriter OutputStreamWriter},
which will encode characters using the {@linkplain
java.nio.charset.Charset#defaultCharset() default charset} for this
instance of the Java virtual machine.
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),
false);
| public PrintWriter(File file, String csn)Creates a new PrintWriter, without automatic line flushing, with the
specified file and charset. This convenience constructor creates the
necessary intermediate {@link java.io.OutputStreamWriter
OutputStreamWriter}, which will encode characters using the provided
charset.
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), csn)),
false);
|
Methods Summary |
---|
public java.io.PrintWriter | append(java.lang.CharSequence csq)Appends the specified character sequence to this writer.
An invocation of this method of the form out.append(csq)
behaves in exactly the same way as the invocation
out.write(csq.toString())
Depending on the specification of toString for the
character sequence csq, the entire sequence may not be
appended. For instance, invoking the toString method of a
character buffer will return a subsequence whose content depends upon
the buffer's position and limit.
if (csq == null)
write("null");
else
write(csq.toString());
return this;
| public java.io.PrintWriter | append(java.lang.CharSequence csq, int start, int end)Appends a subsequence of the specified character sequence to this writer.
An invocation of this method of the form out.append(csq, start,
end) when csq is not null, behaves in
exactly the same way as the invocation
out.write(csq.subSequence(start, end).toString())
CharSequence cs = (csq == null ? "null" : csq);
write(cs.subSequence(start, end).toString());
return this;
| public java.io.PrintWriter | append(char c)Appends the specified character to this writer.
An invocation of this method of the form out.append(c)
behaves in exactly the same way as the invocation
out.write(c)
write(c);
return this;
| public boolean | checkError()Flushes the stream if it's not closed and checks its error state.
if (out != null) {
flush();
}
if (out instanceof java.io.PrintWriter) {
PrintWriter pw = (PrintWriter) out;
return pw.checkError();
} else if (psOut != null) {
return psOut.checkError();
}
return trouble;
| protected void | clearError()Clears the error state of this stream.
This method will cause subsequent invocations of {@link
#checkError()} to return false until another write
operation fails and invokes {@link #setError()}.
trouble = false;
| public void | close()Closes the stream and releases any system resources associated
with it. Closing a previously closed stream has no effect.
try {
synchronized (lock) {
if (out == null)
return;
out.close();
out = null;
}
}
catch (IOException x) {
trouble = true;
}
| private void | ensureOpen()Checks to make sure that the stream has not been closed
if (out == null)
throw new IOException("Stream closed");
| public void | flush()Flushes the stream.
try {
synchronized (lock) {
ensureOpen();
out.flush();
}
}
catch (IOException x) {
trouble = true;
}
| public java.io.PrintWriter | format(java.lang.String format, java.lang.Object args)Writes a formatted string to this writer using the specified format
string and arguments. If automatic flushing is enabled, calls to this
method will flush the output buffer.
The locale always used is the one returned by {@link
java.util.Locale#getDefault() Locale.getDefault()}, regardless of any
previous invocations of other formatting methods on this object.
try {
synchronized (lock) {
ensureOpen();
if ((formatter == null)
|| (formatter.locale() != Locale.getDefault()))
formatter = new Formatter(this);
formatter.format(Locale.getDefault(), format, args);
if (autoFlush)
out.flush();
}
} catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
} catch (IOException x) {
trouble = true;
}
return this;
| public java.io.PrintWriter | format(java.util.Locale l, java.lang.String format, java.lang.Object args)Writes a formatted string to this writer using the specified format
string and arguments. If automatic flushing is enabled, calls to this
method will flush the output buffer.
try {
synchronized (lock) {
ensureOpen();
if ((formatter == null) || (formatter.locale() != l))
formatter = new Formatter(this, l);
formatter.format(l, format, args);
if (autoFlush)
out.flush();
}
} catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
} catch (IOException x) {
trouble = true;
}
return this;
| private void | newLine()
try {
synchronized (lock) {
ensureOpen();
out.write(lineSeparator);
if (autoFlush)
out.flush();
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
| public void | print(boolean b)Prints a boolean value. The string produced by {@link
java.lang.String#valueOf(boolean)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link
#write(int)} method.
write(b ? "true" : "false");
| public void | print(char c)Prints a character. The character is translated into one or more bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link
#write(int)} method.
write(c);
| public void | print(int i)Prints an integer. The string produced by {@link
java.lang.String#valueOf(int)} is translated into bytes according
to the platform's default character encoding, and these bytes are
written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(i));
| public void | print(long l)Prints a long integer. The string produced by {@link
java.lang.String#valueOf(long)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(l));
| public void | print(float f)Prints a floating-point number. The string produced by {@link
java.lang.String#valueOf(float)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(f));
| public void | print(double d)Prints a double-precision floating-point number. The string produced by
{@link java.lang.String#valueOf(double)} is translated into
bytes according to the platform's default character encoding, and these
bytes are written in exactly the manner of the {@link
#write(int)} method.
write(String.valueOf(d));
| public void | print(char[] s)Prints an array of characters. The characters are converted into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(s);
| public void | print(java.lang.String s)Prints a string. If the argument is null then the string
"null" is printed. Otherwise, the string's characters are
converted into bytes according to the platform's default character
encoding, and these bytes are written in exactly the manner of the
{@link #write(int)} method.
if (s == null) {
s = "null";
}
write(s);
| public void | print(java.lang.Object obj)Prints an object. The string produced by the {@link
java.lang.String#valueOf(Object)} method is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(obj));
| public java.io.PrintWriter | printf(java.lang.String format, java.lang.Object args)A convenience method to write a formatted string to this writer using
the specified format string and arguments. If automatic flushing is
enabled, calls to this method will flush the output buffer.
An invocation of this method of the form out.printf(format,
args) behaves in exactly the same way as the invocation
out.format(format, args)
return format(format, args);
| public java.io.PrintWriter | printf(java.util.Locale l, java.lang.String format, java.lang.Object args)A convenience method to write a formatted string to this writer using
the specified format string and arguments. If automatic flushing is
enabled, calls to this method will flush the output buffer.
An invocation of this method of the form out.printf(l, format,
args) behaves in exactly the same way as the invocation
out.format(l, format, args)
return format(l, format, args);
| public void | println()Terminates the current line by writing the line separator string. The
line separator string is defined by the system property
line.separator , and is not necessarily a single newline
character ('\n' ).
newLine();
| public void | println(boolean x)Prints a boolean value and then terminates the line. This method behaves
as though it invokes {@link #print(boolean)} and then
{@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(char x)Prints a character and then terminates the line. This method behaves as
though it invokes {@link #print(char)} and then {@link
#println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(int x)Prints an integer and then terminates the line. This method behaves as
though it invokes {@link #print(int)} and then {@link
#println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(long x)Prints a long integer and then terminates the line. This method behaves
as though it invokes {@link #print(long)} and then
{@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(float x)Prints a floating-point number and then terminates the line. This method
behaves as though it invokes {@link #print(float)} and then
{@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(double x)Prints a double-precision floating-point number and then terminates the
line. This method behaves as though it invokes {@link
#print(double)} and then {@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(char[] x)Prints an array of characters and then terminates the line. This method
behaves as though it invokes {@link #print(char[])} and then
{@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(java.lang.String x)Prints a String and then terminates the line. This method behaves as
though it invokes {@link #print(String)} and then
{@link #println()} .
synchronized (lock) {
print(x);
println();
}
| public void | println(java.lang.Object x)Prints an Object and then terminates the line. This method calls
at first String.valueOf(x) to get the printed object's string value,
then behaves as
though it invokes {@link #print(String)} and then
{@link #println()} .
String s = String.valueOf(x);
synchronized (lock) {
print(s);
println();
}
| protected void | setError()Indicates that an error has occurred.
This method will cause subsequent invocations of {@link
#checkError()} to return true until {@link
#clearError()} is invoked.
trouble = true;
| public void | write(int c)Writes a single character.
try {
synchronized (lock) {
ensureOpen();
out.write(c);
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
| public void | write(char[] buf, int off, int len)Writes A Portion of an array of characters.
try {
synchronized (lock) {
ensureOpen();
out.write(buf, off, len);
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
| public void | write(char[] buf)Writes an array of characters. This method cannot be inherited from the
Writer class because it must suppress I/O exceptions.
write(buf, 0, buf.length);
| public void | write(java.lang.String s, int off, int len)Writes a portion of a string.
try {
synchronized (lock) {
ensureOpen();
out.write(s, off, len);
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
| public void | write(java.lang.String s)Writes a string. This method cannot be inherited from the Writer class
because it must suppress I/O exceptions.
write(s, 0, s.length());
|
|