2015-11-02 77 views
0

所以我有这样如何阅读客户提供的日志文件?

blah blah blah blah blah blah blah 
blah blah blah blah blah blah blah 
<someTag>someDetail</someTag> 
blah blah blah blah blah blah blah 
blah blah blah blah blah blah blah 
<someTag>someDetail</someTag> 
blah blah blah blah blah blah blah 
blah blah blah blah blah blah blah 

这里的日志文件是我的代码读取该文件

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class DummyReadFile { 

    public static void main(String[] args) { 

     BufferedReader br = null; 

     try { 

      String sCurrentLine; 
      br = new BufferedReader(new FileReader("C:/Hussi/logFile.log")); 

      while ((sCurrentLine = br.readLine()) != null) { 
       //System.out.println(sCurrentLine); 
       if(sCurrentLine.contains("<")) 
       { 
        System.out.println("==>>>"+sCurrentLine); 
       } 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null)br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 

} 

,但在我的输出我得到

b l a h b l a h b l a h 
< s o m e T a g >s o m e D e t a i l </s o m e T a g > 
b l a h b l a h b l a h 
< s o m e T a g >s o m e D e t a i l </s o m e T a g > 
b l a h b l a h b l a h 
< s o m e T a g >s o m e D e t a i l </s o m e T a g > 

之间的空间字符实际上是一些方块

我该怎么做才能读取f ile正确

我必须提及,文件格式,这样的东西?

this is the console

+0

sCurrentLine.replaceAll(””, “”); –

+1

如何使用XML解析器获取标签? – davejagoda

回答

1

看来你的文件是UTF-16的文本编码格式

我已经改变两行现在的计划工作好。

FileInputStream fin = new FileInputStream("C:/temp/test3.txt"); 
br = new BufferedReader(new InputStreamReader(fin, "UTF-16LE")); 

改性工作程序

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class DummyReadFile { 

    public static void main(String[] args) { 

     BufferedReader br = null; 

     try { 

      String sCurrentLine; 
      FileInputStream fin = new FileInputStream("C:/temp/test3.txt"); 
      br = new BufferedReader(new InputStreamReader(fin, "UTF-16LE")); 
      //br = new BufferedReader(new FileReader("C:/temp/test3.txt")); 

      while ((sCurrentLine = br.readLine()) != null) { 
       System.out.println(sCurrentLine); 
       /*if(sCurrentLine.contains("<")) 
       { 
        System.out.println("==>>>"+sCurrentLine); 
       }*/ 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null)br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 

}