< prev index next >
src/java.base/share/classes/java/util/Properties.java
Print this page
@@ -35,10 +35,14 @@
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
@@ -995,10 +999,15 @@
* that use the "{@code UTF-8}" or "{@code UTF-16}" encoding. An
* implementation may support additional encodings.
*
* <p>The specified stream remains open after this method returns.
*
+ * <p>This method behaves the same as
+ * {@linkplain #storeToXML(OutputStream os, String comment, Charset charset)}
+ * except that it will {@linkplain java.nio.charset.Charset#forName look up the charset}
+ * using the given encoding name.
+ *
* @param os the output stream on which to emit the XML document.
* @param comment a description of the property list, or {@code null}
* if no comment is desired.
* @param encoding the name of a supported
* <a href="../lang/package-summary.html#charenc">
@@ -1009,24 +1018,71 @@
* @throws java.io.UnsupportedEncodingException if the encoding is not
* supported by the implementation.
* @throws NullPointerException if {@code os} is {@code null},
* or if {@code encoding} is {@code null}.
* @throws ClassCastException if this {@code Properties} object
- * contains any keys or values that are not
- * {@code Strings}.
+ * contains any keys or values that are not {@code Strings}.
* @see #loadFromXML(InputStream)
* @see <a href="http://www.w3.org/TR/REC-xml/#charencoding">Character
* Encoding in Entities</a>
* @since 1.5
*/
public void storeToXML(OutputStream os, String comment, String encoding)
- throws IOException
- {
+ throws IOException {
Objects.requireNonNull(os);
Objects.requireNonNull(encoding);
+
+ try {
+ Charset charset = Charset.forName(encoding);
+ storeToXML(os, comment, charset);
+ } catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
+ throw new UnsupportedEncodingException(encoding);
+ }
+ }
+
+ /**
+ * Emits an XML document representing all of the properties contained
+ * in this table, using the specified encoding.
+ *
+ * <p>The XML document will have the following DOCTYPE declaration:
+ * <pre>
+ * <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+ * </pre>
+ *
+ * <p>If the specified comment is {@code null} then no comment
+ * will be stored in the document.
+ *
+ * <p> An implementation is required to support writing of XML documents
+ * that use the "{@code UTF-8}" or "{@code UTF-16}" encoding. An
+ * implementation may support additional encodings.
+ *
+ * <p> Unmappable characters for the specified charset will be encoded as
+ * numeric character references.
+ *
+ * <p>The specified stream remains open after this method returns.
+ *
+ * @param os the output stream on which to emit the XML document.
+ * @param comment a description of the property list, or {@code null}
+ * if no comment is desired.
+ * @param charset the charset
+ *
+ * @throws IOException if writing to the specified output stream
+ * results in an {@code IOException}.
+ * @throws NullPointerException if {@code os} or {@code charset} is {@code null}.
+ * @throws ClassCastException if this {@code Properties} object
+ * contains any keys or values that are not {@code Strings}.
+ * @see #loadFromXML(InputStream)
+ * @see <a href="http://www.w3.org/TR/REC-xml/#charencoding">Character
+ * Encoding in Entities</a>
+ * @since 10
+ */
+ public void storeToXML(OutputStream os, String comment, Charset charset)
+ throws IOException {
+ Objects.requireNonNull(os, "OutputStream");
+ Objects.requireNonNull(charset, "Charset");
PropertiesDefaultHandler handler = new PropertiesDefaultHandler();
- handler.store(this, os, comment, encoding);
+ handler.store(this, os, comment, charset);
}
/**
* Searches for the property with the specified key in this property list.
* If the key is not found in this property list, the default property list,
< prev index next >