从.txt文件中提取数据字符串

时间:2013-07-05 18:01:03

标签: java file-io java.util.scanner

当我输入文件并尝试从中提取打印的字符串并加倍时,我最终会提取有关文本本身的信息。我将一个System.out.println插入到我的while循环中以打印文件中的行,并且还打印了额外的文本信息行。我试图只从文件中获取书面文本,忽略看起来像这样的行:

\ pard \ tx720 \ tx1440 \ tx2160 \ tx2880 \ tx3600 \ tx4320 \ tx5040 \ tx5760 \ tx6480 \ tx7200 \ tx7920 \ tx8640 \ ql \ qnatural \ pardirnatural“

我这样做,所以我可以从文件中获取信息,用它们制作字符串数组。 此程序的目的是输入一个包含信息行的文件(姓氏(字符串),名字(字符串),帐户余额(双)),分别提取每一行,将每个行字符串放在一个数组列表中,排序数组列表(按姓氏,然后按名字),然后输出一个名为output.txt的文件,其中包含新的排序行。行将被格式化为姓氏,名字,然后是帐户余额,每个行之间有一个空格。行数可以变化。

输入示例(来自.txt文件):

史密斯查尔斯200.000

Allen Drake 5000.00

Allen Trey 300.00

Burbis Zeik 400.00

Zan Rick 6000.00

输出示例(写入文件output.txt):

Allen Drake 5000.00

Allen Trey 300.00

Burbis Zeik 400.00

史密斯查尔斯200.000

Zan Rick 6000.00

谢谢!

    public static void main(String[] args) throws IOException {
    Scanner fileName = new Scanner(System.in);
    String file = fileName.next();
    String input;
      Scanner fileinput = null;
   // File inFile = new File("c:\\csc2310\\test.txt");
      File inFile = new File(file);
     int i = 0;
      try
      {
        fileinput = new Scanner(inFile);
        while(fileinput.hasNext())
        {

           i++;
           System.out.println(i);
           input = fileinput.nextLine();
            System.out.println(input);
        }
        fileinput.close();
      }catch(FileNotFoundException e)
      {
        System.out.println(e);
        System.exit(1);
      }
      finally
      {
          fileinput.close();
      }
 }

2 个答案:

答案 0 :(得分:0)

问题与TextEdit(Mac OS文本编辑器)保存.text文件的方式有关。我将相同的信息写入JEdit,并使用相同的扩展名保存,并删除了所有文本信息行。谢谢你的时间。

答案 1 :(得分:-1)

你的字符串被破坏了。 Java在阅读时会自动使用\。

填充\字符

因此你得到了

"\\pard\\tx720\\tx1440\\tx2160\\tx2880\\tx3600\\tx4320\\tx5040\\tx5760\\tx6480\\tx7200\\tx7920\\tx8640\\ql\\qnatural\\pardirnatural"

您唯一可能做的就是将字符串作为字节数组读取并删除等效于\的字节。检查是否可能