为什么找不到我的档案? [Android]产品

时间:2013-11-08 02:09:34

标签: android file bufferedreader

我的文件位于我的包内。

        bufferLine = "";
        fileName = "fulllist.txt";

        try {
            FileReader fileReader = new FileReader(fileName);

            BufferedReader bufferedReader = new BufferedReader(fileReader);

            while((bufferLine = bufferedReader.readLine()) != null) {


            }   
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex){
            System.err.println("Unable to open file '" + fileName + "'");               
        }
        catch(IOException ex) {
            ex.printStackTrace();
        }

我收到此错误:

  

无法打开文件'fulllist.txt'

我是否需要包含包名或其他内容?我尝试使用

System.err.println("Current directory is" + new File(".").getAbsolutePath());

进行调试,但所有打印的都是

  

当前目录是/

这对我没有帮助,因为我认为这意味着它在包内搜索,对吧?如果需要任何其他信息,请发表评论。

1 个答案:

答案 0 :(得分:1)

要获取数据目录的文件夹(data / data / app.package.name /),请使用:

String directory = context.getApplicationInfo().dataDir + "/";

要在资源文件夹中获取文件的文件流,请使用:

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

这是一个将输入流解析为String的示例:

private  String getString(String filename)
    {


        String result = null;



        AssetManager am = getContext().getAssets();             
        try 
        {
            InputStream is = am.open(filename);
            int length = is.available();
            byte[] data = new byte[length];
            is.read(data);
            result = new String(data);
        } 
        catch (IOException e1) 
        {
            e1.printStackTrace();
        }

        return result;
    }

如果你的文本文件实际上是一个项目列表,最好一起擦除这个文本文件,而是使用一个数组资源(通常放在res / values / arrays.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <array name="months">
        <item>Month</item>
        <item>Jan</item>
        <item>Feb</item>
        <item>Mar</item>
        <item>Apr</item>
        <item>May</item>
        <item>Jun</item>
        <item>Jul</item>
        <item>Aug</item>
        <item>Sep</item>
        <item>Oct</item>
        <item>Nov</item>
        <item>Dec</item>
    </array>

</resources>

然后在你的代码中:

String[] list = getContext().getResources().getStringArray(R.array.months);

希望这会有所帮助:)