android从文本文件中读取

时间:2011-09-27 12:03:54

标签: android

我有一个java类,它使用缓冲读取器从文本文件中读取一些数据,并将该数据作为哈希映射返回:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class FrequencyLoader {

     public FrequencyLoader() throws FileNotFoundException {
        }

        public HashMap<String, Double> loadUnigramFrequencies() throws FileNotFoundException, IOException {
            HashMap<String, Double> unigramFrequencies = new HashMap<String, Double>();
            String line;
            String[] splittedLine;

            BufferedReader bf = new BufferedReader(new FileReader("unigramFrequencies.txt"));

            while ((line = bf.readLine()) != null) {
                splittedLine = line.split("\\s");


                unigramFrequencies.put(splittedLine[0].trim(), Double.parseDouble(splittedLine[1].trim()));
            }

            return unigramFrequencies;
        }
}

我想在我的android应用程序中使用它,但是当我创建这个类的实例并尝试在android Activity类中执行loadUnigramFrequencies()函数时,我收到一个错误,即应用程序意外停止了。我试图在三星Galaxy S2上运行它。应该将文件放在android项目中的某个位置而不是磁盘上吗?如果是,那么在哪里?

3 个答案:

答案 0 :(得分:2)

没有一点logcat它有点琐碎。

 unigramFrequencies.put(splittedLine[0].trim(), Double.parseDouble(splittedLine[1].trim()))
例如,如果splittedLine [0]或splittedLine [1]为null,或者parseDouble可能出现数字格式execption,则可能会引发空指针execption

答案 1 :(得分:2)

我认为错误可能就在那里:

BufferedReader bf = new BufferedReader(new FileReader("unigramFrequencies.txt"));

您应在此处提供绝对路径,并首先确保该文件在访问之前存在处理异常。

如果此文件是最终资产,则应将其放在项目资产文件夹中,并从那里获取文件读取器。

示例(来自here):

AssetFileDescriptor descriptor = getAssets().openFd("unigramFrequencies.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

请注意,您的unigramFrequencies.txt文件应存在于&lt; project&gt; / assets /目录

答案 2 :(得分:1)

这是在干草堆中搜寻针。

我建议您首先学习如何在Android中使用调试:
http://www.droidnova.com/debugging-in-android-using-eclipse,541.html

另外一些异常处理也不会受到影响:
http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions

以下代码行是非常错误的,似乎你不理解android中的文件存储:

new FileReader("unigramFrequencies.txt")

这里解释:
http://developer.android.com/guide/topics/data/data-storage.html