日期:2014-05-20  浏览次数:20950 次

请问java中如何从一个文件中的读取一个已确定存在的字符串后面的字符
比如说一个文件中以确定存在一个单词,我想读取该单词后面的字符,请问java中该如何操作?

------解决方案--------------------
Java code

String str="asdfcomasdf";//读取com后面的字符串
str=str.subString(str.indexOf("com"),str.length());

------解决方案--------------------
Java code


String str="hello world,world peace,world";//读取com后面的字符串
        String key = "world";
        int pos = -key.length();
        while((pos=str.indexOf("world", pos+key.length())) != -1){
            if(pos+key.length()<str.length())
                System.out.println(str.charAt(pos+key.length()));
            else if(pos+key.length()==str.length())
                System.out.println("文件尾");
        }

------解决方案--------------------
Java code

public class Test {
    
    public static void main(String[] args) throws IOException {
        File file = new File("1.txt");
        FileReader fr = new FileReader(file);
        char buf;
        boolean locate = false;
        
        String match = "world";
        char[] pattern = match.toCharArray();
        
        StringBuilder sb = new StringBuilder();
        
        while(fr.ready()) {
            buf = (char)fr.read();
            
            if(!locate && buf == pattern[0]) {
                locate = testChar(buf,fr, pattern,0);
                if(fr.ready())
                    buf = (char)fr.read();
                else
                    break;
            }
            
            if(locate)
                sb.append(buf);
        }
        
        System.out.println(sb.toString());
        
        fr.close();
    }
    
    public static boolean testChar(char now,FileReader fr,char[] pattern,int pos) throws IOException {
        if(pos == pattern.length - 1)
            return true;
        
        if(fr.ready()) {
            if(now == pattern[pos])
                return testChar((char)fr.read(),fr, pattern, pos+1);
            else
                return false;
        } else {
            return false;
        }
    }
}

------解决方案--------------------
自己玩的话
一行一行indexof就行了
考虑多的话
比如说单词可以跨行,又或者你要寻找的文件比较大
确定的字符串又贼长。。。
可以再考虑下性能问题
用kmp或类似的东西来搞
ps:
indexof我记得上直接找的