नमूना कोड:जब आप जावा एपीआई का उपयोग कर गुण फ़ाइल उत्पन्न करते हैं तो कॉलन बैकस्लैश से बच निकले क्यों हैं?
public final class Test
{
public static void main(final String... args)
throws IOException
{
final Properties properties = new Properties();
properties.setProperty("foo", "bar:baz");
// Yeah, this supposes a Unix-like system
final Path path = Paths.get("/tmp/x.properties");
try (
// Requires Java 8!
final Writer writer = Files.newBufferedWriter(path);
) {
properties.store(writer, null);
}
}
}
अब, जब मैं:
$ cat /tmp/x.properties
# The date here
foo=bar\:baz
पेट के एक बैकस्लैश के साथ भाग कर रहा है। वास्तव में, सभी कोलन हैं।
अजीब बात यह है कि अगर मैं हाथ से गुण फ़ाइल उत्पन्न करता हूं और कोलन से बचें, तो गुणों को भी पढ़ा जाता है।
तो, Properties
की लेखन प्रक्रिया क्यों है (यह मामला है कि आप Writer
या OutputStream
रास्ते से उपयोग करते हैं) इस तरह से बचें कॉलन?
संदर्भ के लिए: यह '=', ':', '#' और '!' ([स्रोत] (http://grepcode.com/file/repository.grepcode.com/java) के लिए भी ऐसा ही करेगा /root/jdk/openjdk/6-b14/java/util/Properties.java#628))। –
[यह लाइन] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Properties.java#364) का तात्पर्य है कि एक अंतर है व्यवहार अगर व्यवहार से बच नहीं है। –
क्योंकि यह दस्तावेज में होने के लिए निर्दिष्ट है। – EJP