1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.io; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.AccessController; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Formatter; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.IllegalFormatException; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Locale; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.util.Msg; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.util.PriviAction; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Wraps either an existing {@link OutputStream} or an existing {@link Writer} 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and provides convenience methods for printing common data types in a human 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * readable format. No {@code IOException} is thrown by this class. Instead, 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * callers should use {@link #checkError()} to see if a problem has occurred in 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this writer. 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class PrintWriter extends Writer { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The writer to print data to. 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected Writer out; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Indicates whether this PrintWriter is in an error state. 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean ioError; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Indicates whether or not this PrintWriter should flush its contents after 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * printing a new line. 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean autoflush; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final String lineSeparator = AccessController 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .doPrivileged(new PriviAction<String>("line.separator")); //$NON-NLS-1$ 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code out} as its target 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * stream. By default, the new print writer does not automatically flush its 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contents to the target stream when a newline is encountered. 593819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param out 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target output stream. 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code out} is {@code null}. 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(OutputStream out) { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter(out), false); 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code out} as its target 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * stream. The parameter {@code autoflush} determines if the print writer 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * automatically flushes its contents to the target stream when a newline is 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * encountered. 743819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param out 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target output stream. 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param autoflush 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * indicates whether contents are flushed upon encountering a 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * newline sequence. 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code out} is {@code null}. 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(OutputStream out, boolean autoflush) { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter(out), autoflush); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code wr} as its target 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer. By default, the new print writer does not automatically flush its 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contents to the target writer when a newline is encountered. 913819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param wr 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target writer. 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code wr} is {@code null}. 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(Writer wr) { 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(wr, false); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code out} as its target 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer. The parameter {@code autoflush} determines if the print writer 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * automatically flushes its contents to the target writer when a newline is 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * encountered. 1063819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param wr 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target writer. 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param autoflush 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * indicates whether to flush contents upon encountering a 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * newline sequence. 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code out} is {@code null}. 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(Writer wr, boolean autoflush) { 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(wr); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.autoflush = autoflush; 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = wr; 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code file} as its target. The 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * virtual machine's default character set is used for character encoding. 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The print writer does not automatically flush its contents to the target 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * file when a newline is encountered. The output to the file is buffered. 1263819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param file 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target file. If the file already exists, its contents are 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * removed, otherwise a new file is created. 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an error occurs while opening or creating the target file. 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SecurityException 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if a security manager exists and it denies writing to the 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target file. 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(File file) throws FileNotFoundException { 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-modified 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter( 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new BufferedOutputStream( 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileOutputStream(file), 8192)), 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-modified 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with {@code file} as its target. The 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * character set named {@code csn} is used for character encoding. 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The print writer does not automatically flush its contents to the target 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * file when a newline is encountered. The output to the file is buffered. 1503819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param file 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target file. If the file already exists, its contents are 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * removed, otherwise a new file is created. 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param csn 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the name of the character set used for character encoding. 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an error occurs while opening or creating the target file. 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code csn} is {@code null}. 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SecurityException 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if a security manager exists and it denies writing to the 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target file. 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws UnsupportedEncodingException 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the encoding specified by {@code csn} is not supported. 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(File file, String csn) throws FileNotFoundException, 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project UnsupportedEncodingException { 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-modified 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter( 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new BufferedOutputStream( 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileOutputStream(file), 8192), csn), 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-modified 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with the file identified by {@code 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * fileName} as its target. The virtual machine's default character set is 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * used for character encoding. The print writer does not automatically 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * flush its contents to the target file when a newline is encountered. The 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * output to the file is buffered. 1823819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param fileName 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target file's name. If the file already exists, its 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contents are removed, otherwise a new file is created. 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an error occurs while opening or creating the target file. 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SecurityException 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if a security manager exists and it denies writing to the 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target file. 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(String fileName) throws FileNotFoundException { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-modified 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter( 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new BufferedOutputStream( 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileOutputStream(fileName), 8192)), 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-modified 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code PrintWriter} with the file identified by {@code 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * fileName} as its target. The character set named {@code csn} is used for 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * character encoding. The print writer does not automatically flush its 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contents to the target file when a newline is encountered. The output to 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the file is buffered. 2073819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param fileName 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the target file's name. If the file already exists, its 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contents are removed, otherwise a new file is created. 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param csn 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the name of the character set used for character encoding. 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws FileNotFoundException 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an error occurs while opening or creating the target file. 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code csn} is {@code null}. 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws SecurityException 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if a security manager exists and it denies writing to the 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target file. 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws UnsupportedEncodingException 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the encoding specified by {@code csn} is not supported. 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter(String fileName, String csn) 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws FileNotFoundException, UnsupportedEncodingException { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-modified 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(new OutputStreamWriter( 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new BufferedOutputStream( 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileOutputStream(fileName), 8192), csn), 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-modified 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Flushes this writer and returns the value of the error flag. 2353819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if either an {@code IOException} has been thrown 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * previously or if {@code setError()} has been called; 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code false} otherwise. 2393819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * @see #setError() 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean checkError() { 24272e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson Writer delegate = out; 24372e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson if (delegate == null) { 24472e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson return ioError; 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 24672e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson 24772e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson flush(); 24872e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson return ioError || delegate.checkError(); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Closes this print writer. Flushes this writer and then closes the target. 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If an I/O error occurs, this writer's error flag is set to {@code true}. 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void close() { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (out != null) { 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setError(); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = null; 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Ensures that all pending data is sent out to the target. It also 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * flushes the target. If an I/O error occurs, this writer's error 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * state is set to {@code true}. 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void flush() { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (out != null) { 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.flush(); 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setError(); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setError(); 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes a string formatted by an intermediate {@code Formatter} to the 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target using the specified format string and arguments. For the locale, 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the default value of the current virtual machine instance is used. If 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * automatic flushing is enabled then the buffer is flushed as well. 2943819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param format 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the format string used for {@link java.util.Formatter#format}. 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param args 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the list of arguments passed to the formatter. If there are 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * more arguments than required by the {@code format} string, 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * then the additional arguments are ignored. 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalFormatException 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the format string is illegal or incompatible with the 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * arguments, if there are not enough arguments or if any other 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * error regarding the format string or arguments is detected. 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code format} is {@code null}. 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter format(String format, Object... args) { 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return format(Locale.getDefault(), format, args); 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes a string formatted by an intermediate {@code Formatter} to the 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target using the specified locale, format string and arguments. If 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * automatic flushing is enabled then this writer is flushed. 3173819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param l 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the locale used in the method. No localization will be applied 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code l} is {@code null}. 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param format 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the format string used for {@link java.util.Formatter#format}. 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param args 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the list of arguments passed to the formatter. If there are 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * more arguments than required by the {@code format} string, 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * then the additional arguments are ignored. 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalFormatException 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the format string is illegal or incompatible with the 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * arguments, if there are not enough arguments or if any other 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * error regarding the format string or arguments is detected. 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code format} is {@code null}. 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter format(Locale l, String format, Object... args) { 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (format == null) { 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(Msg.getString("K0351")); //$NON-NLS-1$ 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Formatter(this, l).format(format, args); 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (autoflush) { 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project flush(); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints a formatted string. The behavior of this method is the same as 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this writer's {@code #format(String, Object...)} method. For the locale, 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the default value of the current virtual machine instance is used. 3503819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param format 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the format string used for {@link java.util.Formatter#format}. 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param args 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the list of arguments passed to the formatter. If there are 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * more arguments than required by the {@code format} string, 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * then the additional arguments are ignored. 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalFormatException 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the format string is illegal or incompatible with the 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * arguments, if there are not enough arguments or if any other 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * error regarding the format string or arguments is detected. 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code format} is {@code null}. 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter printf(String format, Object... args) { 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return format(format, args); 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints a formatted string. The behavior of this method is the same as 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this writer's {@code #format(Locale, String, Object...)} method. 3723819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param l 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the locale used in the method. No localization will be applied 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code l} is {@code null}. 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param format 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the format string used for {@link java.util.Formatter#format}. 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param args 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the list of arguments passed to the formatter. If there are 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * more arguments than required by the {@code format} string, 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * then the additional arguments are ignored. 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalFormatException 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the format string is illegal or incompatible with the 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * arguments, if there are not enough arguments or if any other 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * error regarding the format string or arguments is detected. 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code format} is {@code null}. 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter printf(Locale l, String format, Object... args) { 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return format(l, format, args); 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified character array 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the target. 3973819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param charArray 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character array to print to the target. 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(char[] charArray) { 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(new String(charArray, 0, charArray.length)); 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified character to the 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target. 4093819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param ch 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character to print to the target. 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(char ch) { 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(ch)); 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified double to the target. 4203819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param dnum 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the double value to print to the target. 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(double dnum) { 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(dnum)); 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 4293819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson /** 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified float to the target. 4313819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param fnum 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the float value to print to the target. 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(float fnum) { 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(fnum)); 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified integer to the target. 4423819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param inum 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the integer value to print to the target. 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 4463819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(int inum) { 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(inum)); 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified long to the target. 4533819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param lnum 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the long value to print to the target. 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(long lnum) { 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(lnum)); 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified object to the target. 4643819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param obj 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the object to print to the target. 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 4683819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(Object obj) { 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(obj)); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints a string to the target. The string is converted to an array of 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * bytes using the encoding chosen during the construction of this writer. 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The bytes are then written to the target with {@code write(int)}. 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If an I/O error occurs, this writer's error flag is set to {@code true}. 4793819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param str 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the string to print to the target. 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #write(int) 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(String str) { 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(str != null ? str : String.valueOf((Object) null)); 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified boolean to the target. 4903819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param bool 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the boolean value to print the target. 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 4943819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void print(boolean bool) { 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(String.valueOf(bool)); 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the system property {@code 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * "line.separator"} to the target. Flushes this writer if the autoflush 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * flag is set to {@code true}. 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println() { 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 50672e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson print(lineSeparator); 50772e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson if (autoflush) { 50872e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson flush(); 50972e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson } 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified character array 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * followed by the system property {@code "line.separator"} to the target. 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Flushes this writer if the autoflush flag is set to {@code true}. 5173819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param charArray 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character array to print to the target. 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(char[] charArray) { 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(new String(charArray, 0, charArray.length)); 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified character followed by 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the system property {@code "line.separator"} to the target. Flushes this 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5303819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param ch 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character to print to the target. 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(char ch) { 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(ch)); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified double followed by the 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5433819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param dnum 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the double value to print to the target. 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(double dnum) { 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(dnum)); 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified float followed by the 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5563819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param fnum 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the float value to print to the target. 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 5603819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(float fnum) { 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(fnum)); 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified integer followed by the 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5693819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param inum 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the integer value to print to the target. 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 5733819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(int inum) { 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(inum)); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified long followed by the 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5823819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param lnum 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the long value to print to the target. 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 5863819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(long lnum) { 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(lnum)); 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified object followed by the 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 5953819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param obj 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the object to print to the target. 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 5993819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(Object obj) { 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(obj)); 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints a string followed by the system property {@code "line.separator"} 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the target. The string is converted to an array of bytes using the 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * encoding chosen during the construction of this writer. The bytes are 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * then written to the target with {@code write(int)}. Finally, this writer 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * is flushed if the autoflush flag is set to {@code true}. 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If an I/O error occurs, this writer's error flag is set to {@code true}. 6123819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param str 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the string to print to the target. 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #write(int) 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(String str) { 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project print(str); 62072e7c5a8d32494c81206971d4c1077e3f2b88f00Jesse Wilson println(); 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prints the string representation of the specified boolean followed by the 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * system property {@code "line.separator"} to the target. Flushes this 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writer if the autoflush flag is set to {@code true}. 6283819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param bool 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the boolean value to print to the target. 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #print(String) 6323819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson */ 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void println(boolean bool) { 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project println(String.valueOf(bool)); 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the error flag of this writer to {@code true}. 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setError() { 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ioError = true; 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the character buffer {@code buf} to the target. 6483819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param buf 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the non-null array containing characters to write. 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(char[] buf) { 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-note 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // changed array notation to be consistent with the rest of harmony 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-note 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(buf, 0, buf.length); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes {@code count} characters from {@code buffer} starting at {@code 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * offset} to the target. 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This writer's error flag is set to {@code true} if this writer is closed 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * or an I/O error occurs. 6663819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param buf 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the buffer to write to the target. 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param offset 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index of the first character in {@code buffer} to write. 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param count 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the number of characters in {@code buffer} to write. 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IndexOutOfBoundsException 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code offset < 0} or {@code count < 0}, or if {@code 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * offset + count} is greater than the length of {@code buf}. 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(char[] buf, int offset, int count) { 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-note 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // changed array notation to be consistent with the rest of harmony 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-note 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doWrite(buf, offset, count); 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes one character to the target. Only the two least significant bytes 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of the integer {@code oneChar} are written. 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This writer's error flag is set to {@code true} if this writer is closed 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * or an I/O error occurs. 6913819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param oneChar 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character to write to the target. 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(int oneChar) { 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doWrite(new char[] { (char) oneChar }, 0, 1); 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final void doWrite(char[] buf, int offset, int count) { 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-note 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // changed array notation to be consistent with the rest of harmony 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-note 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project synchronized (lock) { 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (out != null) { 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(buf, offset, count); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setError(); 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setError(); 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes the characters from the specified string to the target. 7193819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param str 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the non-null string containing the characters to write. 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(String str) { 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(str.toCharArray()); 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Writes {@code count} characters from {@code str} starting at {@code 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * offset} to the target. 7313819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param str 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the non-null string containing the characters to write. 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param offset 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index of the first character in {@code str} to write. 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param count 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the number of characters from {@code str} to write. 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IndexOutOfBoundsException 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code offset < 0} or {@code count < 0}, or if {@code 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * offset + count} is greater than the length of {@code str}. 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void write(String str, int offset, int count) { 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(str.substring(offset, offset + count).toCharArray()); 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 7483819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * Appends the character {@code c} to the target. 7493819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param c 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character to append to the target. 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter append(char c) { 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(c); 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Appends the character sequence {@code csq} to the target. This 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * method works the same way as {@code PrintWriter.print(csq.toString())}. 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * If {@code csq} is {@code null}, then the string "null" is written 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the target. 7653819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param csq 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character sequence appended to the target. 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter append(CharSequence csq) { 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null == csq) { 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project append(TOKEN_NULL, 0, TOKEN_NULL.length()); 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project append(csq, 0, csq.length()); 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Appends a subsequence of the character sequence {@code csq} to the 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * target. This method works the same way as {@code 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * PrintWriter.print(csq.subsequence(start, end).toString())}. If {@code 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * csq} is {@code null}, then the specified subsequence of the string "null" 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * will be written to the target. 7863819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson * 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param csq 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the character sequence appended to the target. 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param start 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index of the first char in the character sequence appended 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * to the target. 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param end 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index of the character following the last character of the 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * subsequence appended to the target. 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return this writer. 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws StringIndexOutOfBoundsException 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code start > end}, {@code start < 0}, {@code end < 0} or 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * either {@code start} or {@code end} are greater or equal than 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the length of {@code csq}. 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PrintWriter append(CharSequence csq, int start, int end) { 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null == csq) { 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project csq = TOKEN_NULL; 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String output = csq.subSequence(start, end).toString(); 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project write(output, 0, output.length()); 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return this; 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 811