0

文件 model.obj 位于我项目的 assets 目录中。出来的吐司是 File Not Found 异常。我在我的 Galaxy S3 上运行该程序,而不是虚拟设备。我必须指定文件的一些路径吗?

代码:

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;

    import android.content.Context;
    import android.app.Activity;

    public class ImportOBJ {

        protected void onCreate(String filename,Context context) 
        {
            try
            {
                FileInputStream fis = context.openFileInput(filename);  
                BufferedReader reader = new BufferedReader(new InputStreamReader(fis));

                String line = null, input="";

                while( (line = reader.readLine()) != null ) 
                {
                    input += line;
                }

                reader.close(); 
                fis.close();

            }
            catch (Exception ex)
            {
                Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
            }
        }
    }

人活动:

   package com.example.tictactoeshowgrid;

    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;

    public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ImportOBJ obj_import=new ImportOBJ();
            obj_import.onCreate("model.obj",MainActivity.this);

            setContentView(R.layout.activity_main);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }

    }
4

3 回答 3

2

使用以下代码从资产管理器获取文件:

AssetManager assetManager = getResources().getAssets();
InputStream inputStream = null;

try {
    inputStream = assetManager.open("foo.txt");
    if ( inputStream != null)
        Log.d(TAG, "It worked!");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2013-07-03T05:17:03.933 回答
1
FileInputStream fis = context.openFileInput(filename);

可以换成

InputStream fis = context.getAssets().open(filename);  

GetAssets()返回AssetManager

提供对应用程序原始资产文件的访问;有关大多数应用程序想要检索其资源数据的方式,请参阅资源。此类提供了一个较低级别的 API,允许您以简单的字节流形式打开和读取与应用程序捆绑在一起的原始文件。

于 2013-07-03T05:12:50.943 回答
1

路径是 assets/file/model.obj,你可以像这样读取文件

InputStream fis = mContext.getAssets().open("file/model.obj");
于 2013-07-03T05:14:46.200 回答