java中的程序,用于从文本文件中读取数据

时间:2013-04-01 13:56:19

标签: java

date                 time               kg

12/10/2013        00.00.01              1   
13/11/2013        00.00.05              2   
17/12/2013        00.00.90              5   
21/12/2013        00.00.23              6   
27/12/2013        00.00.43              9

我在txt文件中有这些数据。我想在java中编写可以读取这些数据的程序。我已经写了上面的代码,但我有错误。有人能帮助我吗?数据之间有空格。

import java.io*;

public class ReadTextfile{
   public static void main (String[] args) {
      File file = new File ("test.txt");
      StringBuilder line = new StringBuilder();
      BufferedReader reader = null;

try {
    reader = new BufferedReader (new FileReader(file));
    String text = null;

    while ((text = reader.readLine()) !=null) {
           line.append(text)
               .append(System.getProperty ("line.separator"));
    }
    }
    catch (IOException e) {
      e.printStackTrace();
    catch (FileNotFoundException e) {
      e.printStackTrace();
   }finally {
    try {
        if (reader !=null){
            reader.close();
    }
    }
    catch (IOException e) {
      e.printStackTrace();
    }
    }
    System.out.println(line.toString());
    }
    }

3 个答案:

答案 0 :(得分:0)

catch (FileNotFoundException e) 

这是无法访问的代码,因为上面你抓住了IOException

注意that

public class FileNotFoundException extends IOException

您的代码无法编译。删除这个捕获(你甚至没有关闭它..)

另一方面,如果这不是类型,则应将java.io*替换为import java.io.*

答案 1 :(得分:0)

男孩,你只有一些语法问题

1:替换

import java.io* with import java.io.*

2:照顾你的捕捉身体正确​​启动和关闭

try
{
// your code
}
catch(Exception e)
{

}

这是工作代码,比较你的程序

import java.io.*;

public class ReadTextfile{
   public static void main (String[] args) 
   {
      File file = new File ("C:/Users/hussain.a/Desktop/test.txt");
      StringBuilder line = new StringBuilder();
      BufferedReader reader = null;

try {
    reader = new BufferedReader (new FileReader(file));
    String text = null;

    while ((text = reader.readLine()) !=null) {
           line.append(text)
               .append(System.getProperty ("line.separator"));
    }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally 
   {
    try {
        if (reader !=null){
            reader.close();
    }
    }
    catch (IOException e) 
    {
      e.printStackTrace();
    }
    }
    System.out.println(line.toString());
    }
    }

答案 2 :(得分:0)

我会采取以下方法:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ReadTextFile
{
    public static void main(String[] args) throws FileNotFoundException
    {
        File file = new File("test.txt");
        Scanner scanner = new Scanner(file);
        List<Result> results = new ArrayList<Result>();

        while(scanner.hasNextLine())
        {
            String currentLine = scanner.nextLine();
            String [] resultArray = currentLine.split(" ");
            results.add(new Result(resultArray[0], resultArray[1], resultArray[2]));
        }
        scanner.close();
    }

    private static class Result
    {
        private String date;
        private String time;
        private String kg;

        public Result(String date, String time, String kg)
        {
            super();
            this.date = date;
            this.time = time;
            this.kg = kg;
        }

        public String getDate()
        {
            return date;
        }

        public String getTime()
        {
            return time;
        }

        public String getKg()
        {
            return kg;
        }
    }
}

现在,您可以从结果列表中提取您想要的任何信息。

因此,如果您想要打印所有内容,可以执行以下操作:

for(Result singleResult : results)
{
    System.out.println(singleResult.getDate() + " " + singleResult.getTime() + " " + singleResult.getKg());
}

你基本上可以用数据做任何你想做的事情。此方法还允许您在创建Result对象之前将数据转换为不同的类型。