package com.bao.lc.util; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; import org.apache.commons.io.IOUtils; import com.bao.lc.common.UTF8BufferedInputStream; import junit.framework.TestCase; public class PropertiesTest extends TestCase { private static final String[] params = { "/res-utf8.properties", "UTF-8", "/res-utf8-nobom.properties", "UTF-8", "/res-gb2312.properties", "GB2312", }; public void testReadFile() { Properties prop = new Properties(); for(int i = 0; i < params.length; i += 2) { prop.clear(); assertTrue(readFile(params[i], params[i + 1], false, prop)); MiscUtils.trimUtf8Bom(prop); validation(prop); } } public void testReadFile2() { Properties prop = new Properties(); for(int i = 0; i < params.length; i += 2) { prop.clear(); assertTrue(readFile(params[i], params[i + 1], true, prop)); validation(prop); } } private void validation(Properties prop) { assertEquals(prop.size(), 3); for(int j = 1; j <= 3; j++) { String key = "test" + j; assertTrue(prop.containsKey(key)); System.out.println(key + "=" + prop.getProperty(key)); } } private boolean readFile(String file, String charsetName, boolean processUTF8, Properties prop) { boolean result = false; InputStreamReader reader = null; InputStream is = null; try { is = getClass().getResourceAsStream(file); if(processUTF8 && "UTF-8".equalsIgnoreCase(charsetName)) { is = new UTF8BufferedInputStream(is); } reader = new InputStreamReader(is, charsetName); prop.load(reader); result = true; } catch(Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(reader); IOUtils.closeQuietly(is); } return result; } }