2010-06-30 72 views
2

我仍然在自学Java,所以我想尝试读取一个文本文件,并且步骤1)将其输出到控制台并且步骤2)将内容写入新的txt文件。使用FileReader从文本文件中读取一行,使用System.out.println似乎用unicode打印?

这里有一些代码我已经google'd开始,它正在读取文件,但是当我输出行内容到控制台时,我得到以下(看起来像它在unicode或类似的输出......像每一个字符作为与之关联的一个额外的字节....

ÿþFF□u□l□l□ □T□i□l□t□ □P□o□k□e□r□ <SNIP>

以下是该文件的第一行看起来,当我通过记事本打开,如: Full Tilt Poker Game #xxxxxxxxxx: $1 + $0.20 Sit & Go (xxxxxxxx), Table 1 - 15/30 - No Limit Hold'em - 22:09:45 ET - 2009/12/26

这里是我的代码,我是否需要指定编码以显示txt文件内容控制台?我认为简单的文本将是直接的Java ...但我是新的,不太了解如何finicky Java尚未。

编辑:我不知道它是否重要,但我目前使用Eclipse作为我的IDE。

package readWrite; 

import java.io.*; 

public class Read { 
    public static void main(String args[]) 
    { 
     BufferedReader reader = null; 
     try { 
      reader = new BufferedReader(new FileReader("C:\\Users\\brian\\workspace\\downloads\\poker_text.txt")); 
      String line = reader.readLine(); 

      while (line!=null) { 
       // Print read line 
       System.out.println(line); 

       // Read next line for while condition 
       line = reader.readLine(); 
      } 

     } catch (IOException ioe) { 
      System.out.println(ioe.getMessage()); 
     } finally { 
      try { if (reader!=null) reader.close(); } catch (Exception e) {} 
     } 
    } 
} 
+0

看起来很好。你说'poker_text.txt'是一个文本纯文件'你能打开一个终端并输入:'type poker_text.txt' – OscarRyz 2010-06-30 17:51:39

回答

8

ÿþ一开始似乎是一个UTF-16编码文件Byte Order Mark

http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16

您可能需要阅读文件以不同的方式所以Java可以将这些UTF-16字符转换为你的东西的System.out可以显示。

尝试是这样的

FileInputStream fis = new FileInputStream("filename"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-16")); 

OR

在记事本中打开文本文件再次和文件/另存为。在保存屏幕上(至少在Windows 7中),会有一个带编码设置的下拉菜单。选择ANSIUTF-8

+0

谢谢,就是这样。 – ProfessionalAmateur 2010-06-30 17:59:07