Java使用外部文本文件中的数据

时间:2011-03-16 12:14:32

标签: java file text

我有一个包含前1000个素数的文本文件,我编写了一个从所述文本文件中读取数据的方法。

我想知道如何使用此文件中的数据并将其应用于其他方法。

有些事情:

read data from file;
use first eight numbers and apply to this method;

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:4)

读取文件并将每个数字存储到数组或列表中。然后,您可以使用数组的索引获取所需的数字。

答案 1 :(得分:3)

从文件中读取很简单,假设每个数字有一行 -

BufferedReader br = new BufferedReader(new FileReader("<your-text-file>"));
String txtNum;
while((txtNum = br.readLine()) != null)
{
   //txtNum is the number read, use it however you need
   if (txtNum.length() > 8) {
      thisMethod(txtNum.substring(0, 8));
   }
}

答案 2 :(得分:0)

使用Scanner从文件中读取数据,并将每一行存储在ArrayList的数组(或int)中。获取该数组的子集并将其传递给支持可变长度参数的方法(例如)。类似的东西:

public static void main(String[] args) {
   ArrayList<Integer> primes = new ArrayList<Integer>();
   readPrimeData(new File("path/to/data"), primes);
   someMethod(primes.subList(0, 8).toArray(new Integer[0]));
}

static public boolean readPrimeData(File dataFile, ArrayList<Integer> data) {
   boolean err = false;
   try {
      Scanner scanner = new Scanner(dataFile);
      String line;
      while (scanner.hasNext()) {
         line = scanner.nextLine();
         try {
            data.add(Integer.parseInt(line));
         } catch (NumberFormatException e) {
            e.printStackTrace();
            err = true;
         }
      }
      scanner.close();
   } catch (FileNotFoundException e) {
      e.printStackTrace();
      err = true;
   }

   return err;
}


static public void someMethod(Integer...primes) {
   // primes is Integer[]
}

方法someMethod也可以像

一样调用
someMethod(1, 2, 3, 5, 7);

答案 3 :(得分:0)

首先,您必须了解信息的组织方式。例如,你可以用这种方式组织你的1000个第一个主要的nunbers:

1
2
3
5
7...

或者这样:

1-2-3-5-7-11...

您可以使用StringBuilder(或只是一个字符串)来保存文件的编号(假设您的文本与上面的第二种方式相同)。由于数字用短划线分隔,你可以使用一个子串,它可以将前8个数字带到某个方法。

BufferedReader br = new BufferedReader(new FileReader("Prime Nunbers.txt"));
String num;
int count = 1;
while((num= br.readLine()) != null) {
      if( count <= 8 )     
        someMethod( num.subString(0, num.indexOf("-")) );
}

但是如果你的数字像第一种方式一样(每行一个数字),你可以这样做:

BufferedReader br = new BufferedReader(new FileReader("Prime Nunbers.txt"));
String num;
int count = 1;
while((num = br.readLine()) != null) {
        if( count <= 8 )
           someMethod( num );
        num = "";
}

如果你想一次使用前8个数字,你可以完全读取文件,然后根据这些数字的读取方式使用一些子字符串。