-1

わかりましたので、ファイル内の特定のテキストを検索するために使用するこの関数があります。ファイル内でそのテキストが見つかった場合、そのテキストを含むすべてのファイル内のすべての行を返す必要がありますそれは...しかし、何も返さない少し異なる別の関数があり、ファイルに検索されたテキストが含まれていると確信しています...だから、ここに機能する関数があります:

    public void searchText(String text, CommandSender p) {

    File[] searchFiles = new File[files.size()];
    searchFiles = files.toArray(searchFiles);

    FileReader fileReader = null;
    BufferedReader br = null;

    for(File searchFile : searchFiles)
    {
        try {
            fileReader = new FileReader(searchFile);
            br = new BufferedReader(fileReader);
            String line = "";

            while ((line = br.readLine()) != null) {
                if (line.indexOf(text) >= 0) {
                    p.sendMessage(line);
                }
            }

        } catch (Exception e) {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }

            e.printStackTrace();
        } finally {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    }
}

この関数は、これらの行をコンソールに適切に表示します。しかし、この関数を使用すると:

    public String searchPos(int x, int y, int z) {
    String xyz = z + ", " + y + ", " + z;
    StringBuffer sb = new StringBuffer();
    File[] searchFiles = new File[files.size()];
    searchFiles = files.toArray(searchFiles);

    FileReader fileReader = null;
    BufferedReader br = null;

    for(File searchFile : searchFiles)
    {
        try {
            fileReader = new FileReader(searchFile);
            br = new BufferedReader(fileReader);
            String line = "";

            while ((line = br.readLine()) != null) {
                if ((line.indexOf(xyz) >= 0) || (line.contains(xyz))) {
                    sb.append(line);
                }
            }

        } catch (Exception e) {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }

            e.printStackTrace();
        } finally {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
    return  sb.toString();
}

戻り値は単に "" または何もありません。なぜ最初の関数が機能し、2 番目の関数が機能しないのか理解できません。

前もって感謝します、blackwolf12333

4

1 に答える 1

0

オブジェクトに何も追加しないStringBufferので、返されると思います""

于 2012-06-04T15:55:26.553 に答える