Java Eclipse插件:查找包含子字符串的行号无效

Java Eclipse插件:查找包含子字符串的行号无效,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我使用下面的函数来查找所有以字作为子字符串的行号 public ArrayList<Integer> find(String word, File text) throws IOException { LineNumberReader rdr = new LineNumberReader(new FileReader(text)); ArrayList<Integer> results = new ArrayList<Integer>(

我使用下面的函数来查找所有以作为子字符串的行号

    public ArrayList<Integer> find(String word, File text) throws IOException {
    LineNumberReader rdr = new LineNumberReader(new FileReader(text));
    ArrayList<Integer> results = new ArrayList<Integer>();
    try {
        String line = rdr.readLine();
        if (line.contains(word)) {        
            results.add(rdr.getLineNumber());
        }
    } finally {
        rdr.close();
    }
    return results;
}
public ArrayList find(字符串字、文件文本)引发IOException{
LineNumberReader rdr=新的LineNumberReader(新文件读取器(文本));
ArrayList结果=新建ArrayList();
试一试{
String line=rdr.readLine();
if(line.contains(word)){
add(rdr.getLineNumber());
}
}最后{
rdr.close();
}
返回结果;
}
但是,当我按下面的方式调用上述函数时,lineNumberList的大小为0(假设该文件至少包含一个出现的word子字符串)

IProject项目=(IProject)((IAdaptable)firstElement.getAdapter(IProject.class);
IFile manifest=project.getFile(“AndroidManifest.xml”);
File manifestfile=manifest.getRawLocation().makeAbsolute().toFile();
ArrayList lineNumberList=新的ArrayList();
lineNumberList=find(PermissionInfo[0].trim(),manifestfile);

如果文件中有多行,可能需要一个for循环来包装getLine()。

循环遍历项目,即

public ArrayList<Integer> find(String word, File text) throws IOException {
    LineNumberReader rdr = new LineNumberReader(new FileReader(text));
    ArrayList<Integer> results = new ArrayList<Integer>();
    try {
        String line = rdr.readLine();
        while(line != null){
        if (line.contains(word)) {        
            results.add(rdr.getLineNumber());
        }
        line = rdr.readLine();
        }
    } finally {
        rdr.close();
    }
    return results;
}
public ArrayList find(字符串字、文件文本)引发IOException{
LineNumberReader rdr=新的LineNumberReader(新文件读取器(文本));
ArrayList结果=新建ArrayList();
试一试{
String line=rdr.readLine();
while(行!=null){
if(line.contains(word)){
add(rdr.getLineNumber());
}
line=rdr.readLine();
}
}最后{
rdr.close();
}
返回结果;
}

您是否已通过调试器确认确实获得了正确的文件内容?在表视图中打印“清单”的权限可以正常工作。“line.contains(word)”有什么问题吗?您确定文件AndroidManifest.xml有换行符吗?LineNumberReader查找换行符。清单文件有33行。:)
public ArrayList<Integer> find(String word, File text) throws IOException {
    LineNumberReader rdr = new LineNumberReader(new FileReader(text));
    ArrayList<Integer> results = new ArrayList<Integer>();
    try {
        String line = rdr.readLine();
        while(line != null){
        if (line.contains(word)) {        
            results.add(rdr.getLineNumber());
        }
        line = rdr.readLine();
        }
    } finally {
        rdr.close();
    }
    return results;
}