116

サンプルの Android アプリケーションで単純なテキスト ファイルを読み込もうとしています。シンプルなテキストファイルを読み取るために、以下に記述されたコードを使用しています。

InputStream inputStream = openFileInput("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

"test.txt"私の質問は: このファイルをプロジェクトのどこに配置すればよいですか? "res/raw"ファイルを"asset"フォルダーの下に置いてみましたexception "FileNotFound"が、上記のコードの最初のライブが実行されたときを取得します。

4

7 に答える 7

183

/assetsAndroid プロジェクトの下のディレクトリにテキスト ファイルを配置します。AssetManagerクラスを使用してアクセスします。

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

または、/res/rawファイルにインデックスが付けられ、R ファイルの ID でアクセスできるディレクトリにファイルを配置することもできます。

InputStream is = context.getResources().openRawResource(R.raw.test);
于 2011-04-24T15:19:58.797 に答える
26

これを試して、

package example.txtRead;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class txtRead extends Activity {
    String labels="caption";
    String text="";
    String[] s;
    private Vector<String> wordss;
    int j=0;
    private StringTokenizer tokenizer;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wordss = new Vector<String>();
        TextView helloTxt = (TextView)findViewById(R.id.hellotxt);
        helloTxt.setText(readTxt());
 }

    private String readTxt(){

     InputStream inputStream = getResources().openRawResource(R.raw.toc);
//     InputStream inputStream = getResources().openRawResource(R.raw.internals);
     System.out.println(inputStream);
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

     int i;
  try {
   i = inputStream.read();
   while (i != -1)
      {
       byteArrayOutputStream.write(i);
       i = inputStream.read();
      }
      inputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

     return byteArrayOutputStream.toString();
    }
}
于 2011-04-25T04:04:14.303 に答える
23

これは私がそれを行う方法です:

public static String readFromAssets(Context context, String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename)));

    // do reading, usually loop until end of file reading  
    StringBuilder sb = new StringBuilder();
    String mLine = reader.readLine();
    while (mLine != null) {
        sb.append(mLine); // process line
        mLine = reader.readLine();
    }
    reader.close();
    return sb.toString();
}

次のように使用します。

readFromAssets(context,"test.txt")
于 2016-01-17T09:44:55.357 に答える
7

フォルダーにファイルがある場合、フォルダーassetsからファイルを取得するには、次のコードを使用する必要があります。assets

yourContext.getAssets().open("test.txt");

この例では、 はインスタンスをgetAssets()返し、 APIAssetManagerから任意のメソッドを自由に使用できます。AssetManager

于 2011-04-24T15:21:30.433 に答える
3

assets フォルダに保存されたファイルを読み込むには

public static String readFromFile(Context context, String file) {
        try {
            InputStream is = context.getAssets().open(file);
            int size = is.available();
            byte buffer[] = new byte[size];
            is.read(buffer);
            is.close();
            return new String(buffer);
        } catch (Exception e) {
            e.printStackTrace();
            return "" ;
        }
    }
于 2016-06-01T12:29:40.267 に答える