Android:计算SD卡上文件的出现次数

时间:2014-07-25 07:33:23

标签: android file-io android-sdcard find-occurrences

这应该是直截了当但是出于某种原因,当我在将文件下载到SD卡后尝试计算文件中的单词时,数字似乎已关闭。此外,出现的次数越多,我的结果似乎越远。我使用Microsoft Word来验证出现次数(仅使用忽略大小写和整个单词)。为了测试出现次数,我使用下面的“the_counter”变量。我还验证了下载和安装没有任何问题。 FULL文件下载到我的SD卡。这让我疯了 - 我认为Word不能错,所以下面的代码可能出错了?

可能是文件中的空格或特殊字符导致问题 - 有没有办法清理文件以验证这个?

//Find the directory for the SD Card using the API
        File sdcard = Environment.getExternalStorageDirectory();

        //Get the text file
        File file = new File(sdcard,TEMP_FILE);

        //Read text from file
        //StringBuilder text = new StringBuilder();
        m_tree = new Tree();
        int i=0;
        BufferedReader br = null;
        long the_counter=0;
        try {
            br = new BufferedReader(new FileReader(file));
            String line;
            String []arLine;
            while ((line = br.readLine()) != null) {
                //get each word in line
                if(line.length()==0)
                    continue;
                arLine = line.split("\\s+");

                //now add each word to search tree
                for(i=0;i< arLine.length;++i){
                    m_tree.insert(arLine[i]);
                    if(arLine[i].equalsIgnoreCase("a"))
                        ++the_counter;
                }
            }
           m_sTest = Long.toString(the_counter) ;
           br.close();

我编辑了我的代码,每行读取每个字符并手动创建单词。我仍然得到相同的结果。

 br = new BufferedReader(new FileReader(file));
            String line;
            String []arLine;
            StringBuilder word = new StringBuilder();
            while ((line = br.readLine()) != null) {
                //check for word at end of last line
                if(word.length()>0){
                    m_tree.insert(word.toString());
                    word.setLength(0);
                }
                char[] lineChars = new char [line.length()];
                line.getChars(0,line.length(),lineChars,0);

                for(char c: lineChars){
                    if(c== ' '){
                        //if we have a word then store and clear then move on
                        if(word.length()>0){
                            m_tree.insert(word.toString());
                            word.setLength(0);
                        }
                    }
                    else{
                        word.append(c);
                    }
                }

1 个答案:

答案 0 :(得分:0)

这个问题是我没有在单词之间考虑特殊字符:即: 这是四个字,而不是一个。我甚至不确定这是正确的语法还是写作,但是它存在于此档案中,它肯定会让我失去理智。