30

使用 Google 的新 Android Studio IDE 获得了一个全新的项目。

我正在尝试使用InputStreamReader. 我收到文件未找到异常。现在没有任何 assets/ 文件夹。我尝试创建一个并将我的文件添加到许多不同的位置(在项目的根目录、.java 文件的根目录等...)我试图移动文件但仍然没有得到文件成立。

现在使用 Eclipse 从来都不是问题,因为任何模板都会创建一个 assets 文件夹。

有谁知道资产应该去哪里或如何加载它们?

这是使用的代码,它在 .open() 处失败:

InputStream iS = resources.getAssets().open("bla.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(iS));

我还在 Eclipse 中尝试了这段代码,它可以工作并且文件内容被加载。因此,Android Studio 中可能需要一个步骤。

4

3 回答 3

88
  1. 第 1 步:在 Name_Project-Name_Project.iml 文件中打开。
  2. 请参阅以下行:选项名称="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets"
  3. 第 2 步:在主文件夹中创建一个子文件夹“assets”。
  4. 第三步:把文件放到这个文件夹里。
  5. 第4步:加载它。完毕。
于 2013-05-30T14:36:18.843 回答
4

正确的答案并不完全适合我。这有效:

转到项目视图,然后转到app/src/main并创建新目录assets

加载文件:

   InputStream is = getApplicationContext().getAssets().open("bla.txt");

或者:

   InputStream is = context.getAssets().open("bla.txt");

然后以您想要的任何方式将其转换为字符串,示例here

如何做的详细视频(不是我的)

于 2018-05-07T12:12:21.060 回答
1

此代码将为您工作。它将从文件中获取所有数据。

public class Quiz extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    try {
        PlayWithRawFiles();
    } catch (IOException e) {
        Toast.makeText(getApplicationContext(),
                "Problems: " + e.getMessage(), Toast.LENGTH_LONG).show();
    }
}// onCreate

public void PlayWithRawFiles() throws IOException {
    String str="";
    StringBuffer buf = new StringBuffer();
    InputStream is = this.getResources().openRawResource(R.raw.ashraf);
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    if (is!=null) {
        while ((str = reader.readLine()) != null) {
            buf.append(str + "\n" );
        }
    }
    is.close();
   TextView tv=(TextView)findViewById(R.id.tv1);
    tv.setText(buf.toString());


}//
        }
于 2015-12-05T07:42:59.480 回答