どのようにアンドロイドで行ごとに読むのですか?

私はこのコードを使用しています。

try{
         //Open the file that is the first 
         //command line parameter
          FileInputStream fstream = new FileInputStream("config.txt");
         //Get the object of DataInputStream
          DataInputStream in = new DataInputStream(fstream);
          BufferedReader br = new BufferedReader(new InputStreamReader(in));
          while ((br.readLine()) != null) {
              temp1 = br.readLine();
              temp2 = br.readLine();

          }

          in.close();
    }catch (Exception e){//Catch exception if any
    Toast.makeText(getBaseContext(), "Exception", Toast.LENGTH_LONG).show();
    }
    Toast.makeText(getBaseContext(), temp1+temp2, Toast.LENGTH_LONG).show();

これは例外を示しており、temp1とtemp2を更新していません。

2
あなたは2つの異なる変数に同じ行を保存したいですか?または、temp1とtemp2の最後の2行を保存したいだけですか?
追加された 著者 SERPRO,
最初の2行のファイルを2つの異なる変数に保存します。
追加された 著者 xkrlaix,

4 答え

あなたが見ている例外 - 私は強く推奨する)特定のタイプ、例えば IOException 、およびb)メッセージまたはスタックトレースを使用してログまたは表示する、c)Eclipseでプログラミングしている場合、DDMSの観点から少なくともLogCatでチェックする - おそらく、 Androidは開こうとしている config.txt ファイルを見つけられません。通常、あなたのような最も単純なケースでは、 openFileInput - ドキュメントを参照してください。

例外を除いて、読み取りループには欠陥があります。入力する前に空の文字列を初期化し、 while 条件に入力する必要があります。

String line = "";
while ((line = br.readLine()) != null) {
   //do something with the line you just read, e.g.
    temp1 = line;
    temp2 = line;
}

しかし、最初の2行を別々の変数に保存したいだけなら、ループは必要ありません。

String line = "";
if ((line = br.readLine()) != null)
    temp1 = line;
if ((line = br.readLine()) != null)
    temp2 = line;

他の人が既に指摘しているように、 readLine を呼び出すと、行が消費されるので、 config.txt temp1temp2null になります。

7
追加された
私の答えにリンクされているドキュメントからわかるように、 openFileInputActivity が由来する Context のメソッドです。したがって、アクティビティでスニペットを使用している場合、 openFileInput はすでに使用可能になっているはずです。それ以外の場合は、ファイルを読み込むメソッドまたはクラスに Context インスタンスを渡す必要があります。
追加された 著者 Giulio Piancastelli,
私はこのFileInputStreamを使用しています。fstream = new openFileInput( "config.txt");しかしそれは働かない。それはopenFileInputを解決できません。
追加された 著者 xkrlaix,
ありがとう。それは実際に働いた。
追加された 著者 xkrlaix,
try{
     //Open the file that is the first 
     //command line parameter
      FileInputStream fstream = new FileInputStream("config.txt");
     //Get the object of DataInputStream
      DataInputStream in = new DataInputStream(fstream);
      BufferedReader br = new BufferedReader(new InputStreamReader(in));
      String line = "";
      while ((line = br.readLine()) != null) {
          temp1 = line;
          temp2 = line;

      }

      in.close();
}catch (Exception e){//Catch exception if any
Toast.makeText(getBaseContext(), "Exception", Toast.LENGTH_LONG).show();
}
Toast.makeText(getBaseContext(), temp1+temp2, Toast.LENGTH_LONG).show();
1
追加された

whileはすでに行を消費しています。

これを試して

    LineNumberReader reader = new LineNumberReader(new FileReader("config.txt")));
    String line;
    while ((line = reader.readLine()) != null) {
        //doProcessLine
    }
1
追加された

あなたがしなければならない最初の2行を保存したい場合:

try
{
   //Open the file that is the first
   //command line parameter
    FileInputStream fstream = new FileInputStream("config.txt");
   //Get the object of DataInputStream
    DataInputStream in = new DataInputStream(fstream);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String line = "";
    if((line = br.readLine()) != null)
        temp1 = line;
    if((line = br.readLine()) != null)
        temp2 = line;   
}
catch(Exception e)
{
    e.printStackTrace();
}
0
追加された
OK。それは別の問題です。とにかく、そのコードはファイルの最初の2行を取得する必要があります(存在する場合)。 :)
追加された 著者 SERPRO,
実際には "config.txt"が見つからないため例外を表示しています。私が "FileInputStream fstream = new openFileInput(" config.txt ");"を使用すると、それを認識しない。
追加された 著者 xkrlaix,
彼らは実際に存在します。私はそれらを別々に見た。
追加された 著者 xkrlaix,