0

Java Properties クラスを利用する Eclipse Android プロジェクトを作成しようとしています。このプロジェクトでは、src ディレクトリにキーと値のペアを含む構成テキスト ファイルがあります。また、構成ファイルを最初に読み取り、実行中にさまざまなプロパティにアクセスするために使用されるプロパティ オブジェクトを含む構成クラスもあります。ただし、一部のプロパティにアクセスするとエラーが発生します。簡単にデバッグできるように、生成しているプロパティ ファイルを確認したいと思います。どうすればこれを行うことができますか?

public static Properties prop;

static {

    AssetManager assetManager = getApplicationContext().getAssets();
    InputStream instream = assetManager.open("config");
    readConfig(instream);

}

private static void readConfig(Inputstream instream) {

    try {
        String line = "";
        BufferedReader read = new BufferedReader(instream);

        while ((line = read.readLine()) != null) {
            String[] split_line = line.split("=", 2);
            prop.setProperty(split_line[0], split_line[1]);
        }

        prop.store(new FileOutputStream("config.properties"), "Default and local config files");
        read.close();
    }
    catch (Exception e) {
        Log.d("cool", "Failed to create properly initialize config class");
    }
}

public static String getProperty (String propertyKey) {

    try {
        return prop.getProperty(propertyKey);
    }
    catch (Exception e) {
        Log.d("cool", "Failed to access property");
        return null;
    }
}
4

1 に答える 1

0

何をしようとしているのかよくわかりませんが、テキスト ファイルからいくつかのキーと値のペアを読み取りたい場合は、このテキスト ファイルを src ディレクトリに配置しないでください。それが assets ディレクトリの目的です。この file:///android_asset/... のような Uri を介して、assets ディレクトリ内のすべてのファイルにアクセスできます。または、できれば次のコードを使用することもできます。

AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");

編集:次のように Config クラスを実装してみてください:

public class Config
{
    private static Config instance;
    public static Config getInstance(Context context)
    {
         if(instance == null)
         {
             instance = new Config(context);
         }
         return instance;
    }

    protected Config(Context context)
    {
       AssetManager manager = context.getAssets();
       ...
    }
}

次に、次のようにコードで Config クラスを使用できます。

Config config = Config.getInstance(getApplicationContext());
config.getProperty(...);
于 2013-07-15T18:10:06.110 に答える