【问题标题】:android - reading user created fileandroid - 读取用户创建的文件
【发布时间】:2014-05-19 08:50:42
【问题描述】:

找不到太多关于如何读取不在 SD 卡或存储设备上的文件,而是在 android 项目目录中的文件。

我不断收到 FileNotFoundException。这就是我声明文件的方式,

File SPPolicy = new File("SHPR_policy");

将它放在 src/ 目录src/[[package]]/ 目录 和主项目目录时,我遇到了同样的错误,并且我收到此错误:

java.io.FileNotFoundException: /SHPR_policy: open failed: ENOENT (No such file or  directory)

我必须把这个文件放在某个地方吗?是不是因为我的文件没有扩展名(我注意到 SHPR_policy 之前的“/”但我不认为这会是一个问题,因为 Eclipse 让我创建一个没有扩展名的文件)?

【问题讨论】:

  • 它应该在 assets 文件夹中,而不是在 src/somewhere
  • 您是在运行时创建文件吗?那么你不能把它放在资产中。
  • 不,它应该是一个常量文件。我会把它放在资产中,看看它是如何工作的。谢谢。

标签: java android eclipse file io


【解决方案1】:

将文件保存在原始文件夹中并尝试以下代码。

 try
 {
        Resources res = getResources();
        InputStream in_s = res.openRawResource(R.raw.test);

        byte[] b = new byte[in_s.available()];
        in_s.read(b);
        txtHelp.setText(new String(b));
    } catch (Exception e) {
        // e.printStackTrace();
        txtHelp.setText("errr.");
    }

【讨论】:

    【解决方案2】:

    使用这些代码检查文件是否已经创建:

    File f;
    f=new File("myfile");
    if(!f.exists()){
      f.createNewFile();
    }
    

    另外,如果你想在外部目录中分配你的文件,你可以使用这些代码:

    File newxmlfile = new File( Environment.getExternalStorageDirectory() + "/new.xml");
    XmlSerializer serializer = Xml.newSerializer();
    try {
       newxmlfile.createNewFile();
    } catch (Exception e) {
       Log.e("IOException", "exception in createNewFile() method", e);
    }
    

    而且,您是否在清单中添加了能够操作文件的权限?

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    【讨论】:

      【解决方案3】:

      您应该将文件放在 assets 文件夹中并使用它:

         InputStream ims = getAssets().open("SHPR_policy");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-03
        • 2016-09-20
        • 1970-01-01
        相关资源
        最近更新 更多