1 package org.codehaus.plexus.util; 2 3 /* 4 * Copyright The Codehaus Foundation. 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 import java.io.File; 20 import java.io.IOException; 21 import java.io.InputStream; 22 import java.io.InputStreamReader; 23 import java.io.Reader; 24 import java.io.UnsupportedEncodingException; 25 import java.net.URL; 26 import java.nio.charset.Charset; 27 import java.nio.file.Files; 28 29 import org.codehaus.plexus.util.xml.XmlStreamReader; 30 31 /** 32 * Utility to create Readers from streams, with explicit encoding choice: platform default, XML, or specified. 33 * 34 * @deprecated This class has been deprecated. When reading XML, users are encouraged to pass the {@code InputStream} 35 * directory to the {@link org.codehaus.plexus.util.xml.pull.MXParser#setInput(InputStream, String)}, 36 * giving a {@code null} encoding to let the parser figure it out. For non xml usages, use the JDK 37 * {@link Files} utility methods. 38 * 39 * @author <a href="mailto:hboutemy@codehaus.org">Herve Boutemy</a> 40 * @see Charset 41 * @see <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html">Supported encodings</a> 42 * 43 * @since 1.4.3 44 */ 45 @Deprecated 46 public class ReaderFactory { 47 /** 48 * ISO Latin Alphabet #1, also known as ISO-LATIN-1. Every implementation of the Java platform is required to 49 * support this character encoding. 50 * 51 * @see Charset 52 */ 53 public static final String ISO_8859_1 = "ISO-8859-1"; 54 55 /** 56 * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. Every 57 * implementation of the Java platform is required to support this character encoding. 58 * 59 * @see Charset 60 */ 61 public static final String US_ASCII = "US-ASCII"; 62 63 /** 64 * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either 65 * order accepted on input, big-endian used on output). Every implementation of the Java platform is required to 66 * support this character encoding. 67 * 68 * @see Charset 69 */ 70 public static final String UTF_16 = "UTF-16"; 71 72 /** 73 * Sixteen-bit Unicode Transformation Format, big-endian byte order. Every implementation of the Java platform is 74 * required to support this character encoding. 75 * 76 * @see Charset 77 */ 78 public static final String UTF_16BE = "UTF-16BE"; 79 80 /** 81 * Sixteen-bit Unicode Transformation Format, little-endian byte order. Every implementation of the Java platform is 82 * required to support this character encoding. 83 * 84 * @see Charset 85 */ 86 public static final String UTF_16LE = "UTF-16LE"; 87 88 /** 89 * Eight-bit Unicode Transformation Format. Every implementation of the Java platform is required to support this 90 * character encoding. 91 * 92 * @see Charset 93 */ 94 public static final String UTF_8 = "UTF-8"; 95 96 /** 97 * The <code>file.encoding</code> System Property. 98 */ 99 public static final String FILE_ENCODING = System.getProperty("file.encoding"); 100 101 /** 102 * Create a new Reader with XML encoding detection rules. 103 * 104 * @param in not null input stream. 105 * @return an XML reader instance for the input stream. 106 * @throws IOException if any. 107 * @see XmlStreamReader 108 */ 109 public static XmlStreamReader newXmlReader(InputStream in) throws IOException { 110 return new XmlStreamReader(in); 111 } 112 113 /** 114 * Create a new Reader with XML encoding detection rules. 115 * 116 * @param file not null file. 117 * @return an XML reader instance for the input file. 118 * @throws IOException if any. 119 * @see XmlStreamReader 120 */ 121 public static XmlStreamReader newXmlReader(File file) throws IOException { 122 return new XmlStreamReader(file); 123 } 124 125 /** 126 * Create a new Reader with XML encoding detection rules. 127 * 128 * @param url not null url. 129 * @return an XML reader instance for the input url. 130 * @throws IOException if any. 131 * @see XmlStreamReader 132 */ 133 public static XmlStreamReader newXmlReader(URL url) throws IOException { 134 return new XmlStreamReader(url); 135 } 136 137 /** 138 * Create a new Reader with default platform encoding. 139 * 140 * @param in not null input stream. 141 * @return a reader instance for the input stream using the default platform charset. 142 * @see Charset#defaultCharset() 143 */ 144 public static Reader newPlatformReader(InputStream in) { 145 return new InputStreamReader(in); 146 } 147 148 /** 149 * Create a new Reader with default platform encoding. 150 * 151 * @param file not null file. 152 * @return a reader instance for the input file using the default platform charset. 153 * @throws IOException if any. 154 * @see Charset#defaultCharset() 155 */ 156 public static Reader newPlatformReader(File file) throws IOException { 157 return Files.newBufferedReader(file.toPath()); 158 } 159 160 /** 161 * Create a new Reader with default platform encoding. 162 * 163 * @param url not null url. 164 * @return a reader instance for the input url using the default platform charset. 165 * @throws IOException if any. 166 * @see Charset#defaultCharset() 167 */ 168 public static Reader newPlatformReader(URL url) throws IOException { 169 return new InputStreamReader(url.openStream()); 170 } 171 172 /** 173 * Create a new Reader with specified encoding. 174 * 175 * @param in not null input stream. 176 * @param encoding not null supported encoding. 177 * @return a reader instance for the input stream using the given encoding. 178 * @throws UnsupportedEncodingException if any. 179 * @see <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html">Supported encodings</a> 180 */ 181 public static Reader newReader(InputStream in, String encoding) throws UnsupportedEncodingException { 182 return new InputStreamReader(in, encoding); 183 } 184 185 /** 186 * Create a new Reader with specified encoding. Note that there is no buffering on this reader, which favours 187 * clients that read into large buffers (8K+). 188 * 189 * @param file not null file. 190 * @param encoding not null supported encoding. 191 * @return a reader instance for the input file using the given encoding. 192 * @throws IOException if any. 193 * @see <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html">Supported encodings</a> 194 */ 195 public static Reader newReader(File file, String encoding) throws IOException { 196 return new InputStreamReader(Files.newInputStream(file.toPath()), encoding); 197 } 198 199 /** 200 * Create a new Reader with specified encoding. 201 * 202 * @param url not null url. 203 * @param encoding not null supported encoding. 204 * @return a reader instance for the input url using the given encoding. 205 * @throws IOException if any. 206 * @see <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html">Supported encodings</a> 207 */ 208 public static Reader newReader(URL url, String encoding) throws IOException { 209 return new InputStreamReader(url.openStream(), encoding); 210 } 211 }