[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: [jfriends] Re: Re: java.util.Properties.load()で ShiftJISを読みたい
岸田です。
GORI wrote:
> >java.util.ListResourceBundle クラスを利用するという手はない
> >でしょうか?
> このクラスは不勉強でした.検討してみます.
>
自分で試してないのに答えてしまったので、できるかどうかテストして
みました。自分の環境 Windows98 JDK1.2 ではできました。
テストプログラムは次のようなものです。
------
import java.util.*;
public class ResourceTest {
private static ResourceBundle resources;
public ResourceTest() {
try {
resources = ResourceBundle.getBundle("MyResourceBundle");
} catch (MissingResourceException mre) {
mre.printStackTrace();
System.exit(1);
}
System.out.println(resources.getString("test0"));
System.out.println(resources.getObject("test1"));
System.out.println(resources.getObject("test2"));
}
static public void main(String[] args) {
new ResourceTest();
}
}
------
import java.io.*;
import java.util.*;
public class MyResourceBundle extends ListResourceBundle {
private Object[][] contents;
private Vector name = new Vector();
private Vector value = new Vector();
public MyResourceBundle() {
try {
BufferedReader bufferReader = new BufferedReader(
new FileReader("PropertiesTest.properties"));
String string = null;
while ((string = bufferReader.readLine()) != null) {
setNameValue(string);
}
bufferReader.close();
contents = new Object[name.size()][];
for (int i = 0;i < contents.length; i++) {
contents[i] = new Object[2];
contents[i][0] = name.elementAt(i);
contents[i][1] = value.elementAt(i);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Object[][] getContents() {
return contents;
}
private void setNameValue(String nameValue) {
try {
int equal_pos = nameValue.indexOf('=');
if (equal_pos != -1) {
name.add(nameValue.substring(0, equal_pos));
value.add(nameValue.substring(equal_pos + 1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
------
#test
test0=これはテストです。
test1=このファイルの名前はPropertiesTest.propertiesです。
test2=ShiftJISのファイルです。
------
岸田ゆき枝
会社へのメール: yukie@xxxxxxxxxx
おうちへのメール:yukie@xxxxxxxxxx
ウェブページ: http://yukie.com/