标签:style blog http java color 使用
Java中读写资源文件最重要的类是Properties
1) 资源文件要求如下:
2) 功能大致如下:
1 package com.ifly.myhome.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.io.UnsupportedEncodingException; 10 import java.util.Properties; 11 12 public class PropertiesMyTest 13 { 14 15 public static void main(String[] args) 16 { 17 18 String readfile = "e:" + File.separator + "readfile.properties"; 19 String writefile = "e:" + File.separator + "writefile.properties"; 20 String readxmlfile = "e:" + File.separator + "readxmlfile.xml"; 21 String writexmlfile = "e:" + File.separator + "writexmlfile.xml"; 22 String readtxtfile = "e:" + File.separator + "readtxtfile.txt"; 23 String writetxtfile = "e:" + File.separator + "writetxtfile.txt"; 24 25 readPropertiesFile(readfile); //读取properties文件 26 writePropertiesFile(writefile); //写properties文件 27 readPropertiesFileFromXML(readxmlfile); //读取XML文件 28 writePropertiesFileToXML(writexmlfile); //写XML文件 29 readPropertiesFile(readtxtfile); //读取txt文件 30 writePropertiesFile(writetxtfile); //写txt文件 31 } 32 33 //读取资源文件,并处理中文乱码 34 public static void readPropertiesFile(String filename) 35 { 36 Properties properties = new Properties(); 37 try 38 { 39 InputStream inputStream = new FileInputStream(filename); 40 properties.load(inputStream); 41 inputStream.close(); //关闭流 42 } 43 catch (IOException e) 44 { 45 e.printStackTrace(); 46 } 47 String username = properties.getProperty("username"); 48 String passsword = properties.getProperty("password"); 49 String chinese = properties.getProperty("chinese"); 50 try 51 { 52 chinese = new String(chinese.getBytes("ISO-8859-1"), "GBK"); // 处理中文乱码 53 } 54 catch (UnsupportedEncodingException e) 55 { 56 e.printStackTrace(); 57 } 58 System.out.println(username); 59 System.out.println(passsword); 60 System.out.println(chinese); 61 } 62 63 //读取XML文件,并处理中文乱码 64 public static void readPropertiesFileFromXML(String filename) 65 { 66 Properties properties = new Properties(); 67 try 68 { 69 InputStream inputStream = new FileInputStream(filename); 70 properties.loadFromXML(inputStream); 71 inputStream.close(); 72 } 73 catch (IOException e) 74 { 75 e.printStackTrace(); 76 } 77 String username = properties.getProperty("username"); 78 String passsword = properties.getProperty("password"); 79 String chinese = properties.getProperty("chinese"); //XML中的中文不用处理乱码,正常显示 80 System.out.println(username); 81 System.out.println(passsword); 82 System.out.println(chinese); 83 } 84 85 //写资源文件,含中文 86 public static void writePropertiesFile(String filename) 87 { 88 Properties properties = new Properties(); 89 try 90 { 91 OutputStream outputStream = new FileOutputStream(filename); 92 properties.setProperty("username", "myname"); 93 properties.setProperty("password", "mypassword"); 94 properties.setProperty("chinese", "中文"); 95 properties.store(outputStream, "author: shixing_11@sina.com"); 96 outputStream.close(); 97 } 98 catch (IOException e) 99 { 100 e.printStackTrace(); 101 } 102 } 103 104 //写资源文件到XML文件,含中文 105 public static void writePropertiesFileToXML(String filename) 106 { 107 Properties properties = new Properties(); 108 try 109 { 110 OutputStream outputStream = new FileOutputStream(filename); 111 properties.setProperty("username", "myname"); 112 properties.setProperty("password", "mypassword"); 113 properties.setProperty("chinese", "中文"); 114 properties.storeToXML(outputStream, "author: shixing_11@sina.com"); 115 outputStream.close(); 116 } 117 catch (IOException e) 118 { 119 e.printStackTrace(); 120 } 121 } 122 123 }
username=khpassword=khchinese=谓语
#author: shixing_11@sina.com#Fri May 28 22:19:44 CST 2010password=khchinese=\u8C13\u8BEDusername=kh
3. readxmlfile.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"><properties><entry key="password">mypassword</entry><entry key="chinese">中文</entry><entry key="username">myname</entry></properties>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"><properties><entry key="password">kh</entry><entry key="chinese">中文</entry><entry key="username">kh</entry></properties>
1.原因
Properties调用load(InputStream)时,读取文件时使用的默认编码为ISO-8859-1;当我们讲中文放入到properties文件中,通过getProperty(key)获取值时,取到得数据是ISO-8859-1格式的,但是ISO-8859-1是不能识别中文的。
2.解决方法
通过getProperty()获取的数据data既然是ISO-8859-1编码的,就通过data.getByte(“iso-8859-1”)获取获取,使用new String(data.getByte(“iso-8859-1”),”UTF-8”)进行转换。当然properties文件的编码类型需要和new String(Byte[],charst)中的第二个参数的编码类型相同
Java读写资源文件类Properties,布布扣,bubuko.com
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/xiaofengkang/p/3862553.html