3

こんにちは、非常に厄介な問題が発生しました。このようなテキスト ファイルを読みたいと思います。

KEY
0 1 2 3 4 5 6 7
KEYEND

結果を文字列、小数などとして返すことができるため、スキャナークラスを使用しようとしました

   public static void LoadStuff(String Name) {
      Scanner reader = null;
      try {
         reader = new Scanner(new File(Name));
      } catch (Exception e) {
         Log.d("damn", "FAIL");
      }
         if(reader != null)
            Load(reader);
   }


private static void Load(Scanner reader) {
      while (reader.hasNext()) {
         String result = reader.next();
         if (result == "KEY") {   // may be  result.equalsignorecase
            while (result != "KEYEND") {
               int index = reader.nextInt();
               Log.d("Index", String.valueOf(index));
            }
         }
      }
            reader.close();
   }

上記のことはできません。スキャナーがファイルを見つけられないため、「file.txt」のような解析が機能しません。この「res/data/file.txt」のようなパスでも試してみましたが、ファイルの場所と取得方法は機能しませんおかげでそれを機能させるためのディレクトリ

4

6 に答える 6

1

現在のプロジェクト内のファイル (テキスト ファイルも含む) にアクセスするために常に使用しているコードは次のとおりです。

textFileStream = new DataInputStream(getAssets().open(String.format("myFile.txt")));

String.format 部分には、いつでも独自の文字列を入力できます。

鍵は常に

getAssets()

部。

したがって、あなたの場合、次のようなものがあるかもしれません:

reader = new Scanner(new File(getAssets().open(String.format("myFile.txt")))); 

OR

reader = new Scanner(new File(getAssets().open(Name)));

File コンストラクターは InputStream を受け取ることができ、getAssets().open は InputStream を返します。

于 2012-06-11T14:45:46.040 に答える
0

ファイルを内部ストレージに書き込むには、openFileOutput. Androidデータストレージのドキュメントによると:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

スキャナを使用してファイルを読み取るには:

File f = new File( getFilesDir(), FILENAME );
Scanner s = new Scanner( f );

注: getFilesDir()は、openFileOutput(String, int) で作成されたファイルが格納されるファイル システム上のディレクトリへの絶対パスを返します。

ファイルに出力したものを確認するには、チェックアウトしてください。SDカードをマウントするのと同じ方法で、adbシェルからアプリケーションデータを表示することは可能ですか? .

その他の保管オプション

于 2014-03-04T22:15:44.917 に答える
0
  1. このようにパスを指定してみてください"/sdcard/file.txt"

  2. equalsオブジェクトを比較するときは、常に " " にしてください。Never use "==" or "!=" with Objects. (String is an object too in Java)

    例えば:

     if (result.equals("KEY"))` {       // equals is used
        `while (!(result.equals("KEYEND")))` {  // !equals is used
    
           int index = reader.nextInt();
           Log.d("Index", String.valueOf(index));
        }
     }
    
于 2012-06-11T16:38:20.223 に答える
0

テキスト ファイルをassetsフォルダーに入れ、 を使用して読み取りますgetAssets().open("file.txt")

于 2012-06-11T14:46:00.597 に答える