-3
public class Test {
public static void main(String args[])
{
    String numbers[];
    numbers = new String[81];


    try {
            FileInputStream fileInput = new FileInputStream("level.txt");
            int r,index=0;
            char y;
            while ((r = fileInput.read()) != -1) {
               y = (char)r;
               numbers[index++] = y + "";
            }
        }catch(Exception e){System.out.println("you are pawned !!");}

        for(int i=0;i<81;i++)
        System.out.println(numbers[i].length());
}
}

上記のコードは Java では問題なく動作しますが、Android で使用すると、「残念ながらデバイスが動作を停止しました」というエラーが発生します。また、「Test.java」と「level.txt」は同じフォルダーにあるため、Androidで機能しない理由はわかりません。

4

2 に答える 2

0

Androidアーキテクチャでは、「Test.javaとlevel.txtが同じフォルダにある」ということはありません。

Android には、内部ストレージと外部ストレージがあります。2 つの異なる方法でルート ディレクトリを取得できます。

外部ストレージ (sdcard フォルダー): ここでは、内部メモリとは異なり、コードを使用してファイルを保存する必要はありません。SDカードに移動するだけです。

String path = Environment.getExternalStorageDirectory() + "/level.txt";
FileInputStream fileInput = new FileInputStream(path);

内部メモリ(アプリ専用ディスク)

String path this.getFilesDir().getAbsolutePath() + "/" + name;
FileInputStream fileInput = new FileInputStream(path);

これをミニフェスト ファイルに追加して、外部メモリからの読み取り/書き込みをアプリに許可します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

アプリ内には、アセットや raw フォルダーなど、ファイルを配置できる場所がたくさんあります。

assets フォルダー内のファイルのストリームを取得します。

InputStream is = this.getAssets().open("level.txt");

raw フォルダー内のファイルのストリームを取得します。

InputStream is = this.getResources().openRawResource(R.raw.level);

幸運を。

于 2013-09-21T13:02:26.000 に答える