[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/