0

我的文件位于我的包裹内。

        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());

调试,但所有打印的是

当前目录是/

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

4

1 回答 1

1

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

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

要在您的资产文件夹中获取文件的文件流,请使用以下命令:

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

这是一个将输入流解析为字符串的示例:

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);

希望这可以帮助 :)

于 2013-11-08T02:14:43.113 回答