4

.jsonSDカードではなくパッケージにある設定ファイルのすべてのリストを取得するにはどうすればよいですか?画像の下のベローズは、私がアクセスしたいフォルダ内のファイルを示しています。アイデアは次のとおりです。アプリケーションの起動時に、構成ファイルのリストとそれらへのパスを取得し、それをテスターに​​表示して、どのサーバーに接続するかを選択します。どうやってやるの?私は探していましたが、結果はPackageManagerありませんでしAssetManagerた。

フォルダー構成をフォルダーアセットに配置すると、このコードゲームで使用可能な構成のリストが表示されますが、それらを読み取るためのフルパスを取得するにはどうすればよいですか?

AssetManager am = getAssets();
String s = getPackageName();
Resources tmp = pm.getResourcesForApplication(s);
String [] arr = am.list("configs2");

スナップショット

4

2 に答える 2

1

私はついに問題を解決しました。これが私のプロジェクトの構造です。 ここに画像の説明を入力してください

  1. アプリケーションパッケージからファイルのリストを取得するには、取得するすべてのファイルをアセットフォルダーに配置する必要があります。コードは次のとおりです。

    private ArrayList getPackageConfigList(){AssetManager am = getAssets(); 文字列[]arr= null; {arr = am.list(folder);を試してください。} catch(IOException e){e.printStackTrace();}

                ArrayList<String> flist = new ArrayList<String>();
    
                for (int i=0; i<arr.length; i++)
                {
                    flist.add(PKG + arr[i]);
                    Log.d(tag, PKG+ arr[i]);
                }
    
                return flist;
            }
    
    1. パッケージから具体的なファイルを読み取るには:

    private String loadConfigFromPackage(String fileName){AssetManager am = getAssets(); InputStream in = null; 文字列の結果=null;

    try
    {
        //open file, read to buffer, convert to string
        in = am.open(folder + "/" + fileName);
        int size = in.available();
        byte[] buffer = new byte[size];
        in.read(buffer);
        in.close();
        result = new String(buffer);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        try
        {
            in.close();
        }
        catch(Exception ex){}
    }
    return result;
    

    }

于 2013-02-01T21:09:14.490 に答える
1

同様のことを行うために、次のコマンドを使用しました。

InputStream is = context.getResources().openRawResource(R.raw.raw_data_file);

ファイルraw_data_fileがパス内にあった場所res/raw/raw_data_file.txt。その後、通常どおりInputStreamを使用してファイルを読み取ることができます。ファイルが存在する場所でも同様のことができると思いますが、原則として、通常は任意のリソースをres(ources)フォルダーに配置します。

于 2013-02-01T14:34:54.060 に答える