遇到For-Loop问题

时间:2016-07-01 08:23:21

标签: android for-loop

我必须将SD卡中的文本文件放在一个文件夹中并显示它们  在textView中。我正在使用此代码

if(file!=null){
            File list[] = file.listFiles();

            Log.d("file size>>",""+file.length());

            if(list!=null){
                for( int i=0; i< list.length; i++)
                {
                    Log.d(">>>>",""+list[i].getName());
                    if(list[i].isFile() && list[i].getName().endsWith(".txt")) {
                        myList.add(list[i]);

                        Log.d("myList size>>",""+myList.size());

                        try {
                            FileInputStream fIn = new FileInputStream(list[i]);

                            BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));

                            while ((aDataRow = myReader.readLine()) != null) {
                                aBuffer += aDataRow + "\n";

                            }
                            abc = aBuffer;

                            Log.d("log valuee>>",abc);

                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }

abc是一个字符串变量,我在其中保存每个文件的值,但每次循环运行时都会打印重复数据。其他日志正在打印准确的数据

1 个答案:

答案 0 :(得分:0)

abcaBuffer永远不会被清除。

因此,每次循环运行时,它们都会被附加到。

例如,如果您的第一个文件包含&#34;快速棕色狐狸&#34;,则第二个文件包含&#34;跳过&#34;,第三个包含&#34;懒狗&#34;,你会得到

  

快速棕狐   快速的棕色狐狸跳过了   快速的棕色狐狸跳过懒狗

而不是

  

快速棕狐    跳过了   懒狗

解决方案只是在再次使用之前设置abc="" 或者也许aBuffer = "",取决于你打算留在那里。

正如@qbeck在评论中指出的那样,您可能希望使用StringBuilderStringBuffer而不是String。由于您的缓冲区将包含整个文件,因此可能会影响性能。