从.db文件一次读取一行文本

时间:2014-11-25 10:32:15

标签: java

首先,我不知道a.db文件如何存储数据。如果它在一行或多行中完成。可能它与如何解决问题有一些区别。 我面临的问题是我不知道该文件包含多少数据,只是它将是一个日期,时间和下面给出的表格中x个事件的描述。 我必须将文本转换为字符串并将它们放在一个数组中,但我不知道如何分隔文本。当我尝试时,我刚刚结束了一根长串。

有人能帮助我吗?

01.01.2015|07:00-07:15|get up
01.01.2015|08:00|get to work
01.01.2015|08:00-16:00| work
01.01.2015|16:00-16:30| go home

我想要的是什么:

array[0] = "01.01.2015|07:00-07:15|get up"
array[1] = "01.01.2015|08:00|get to work"
array[2] = "01.01.2015|08:00-16:00| work"
array[3] = "01.01.2015|16:00-16:30| go home"

string table [] = new String [100];

void readFile(String fileName){
  String read = "";
  try {
    x = new Scanner (new File(fileName));
  }
  catch (Exception e) {
  }
  while (x.hasNext()) {
  read += x.nextLine(); 
  }             
}

4 个答案:

答案 0 :(得分:2)

假设您的第一个代码块实际上是您尝试阅读的文件的副本,您可以这样做:

Scanner s = new Scanner(new File("file1.txt"));
List<String> lines = new LinkedList<>();
while (s.hasNextLine())
    lines.add(s.nextLine());

如果你真的想使用数组而不是列表,你可以

String[] table = lines.toArray(new String[lines.size()]);
循环后

如果您有幸使用 Java 8 ,您可以使用:

List<String> lines = Files.lines(Paths.get("big.txt"))
                          .collect(Collectors.toList());

同样,如果您真的想使用数组,可以使用lines.toArray转换列表。

答案 1 :(得分:1)

从Java 8开始,您可以使用Paths.get(String first, String... more)Files.lines(Path path)Stream.toArray()

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class SOPlayground {

    public static void main(String[] args) throws Exception {

        Path path = Paths.get("/tmp", "db.txt");
        Object[] lines = Files.lines(path).toArray();

        System.out.println(lines.length);
        System.out.println(lines[0]);
        System.out.println(lines[lines.length - 1]);
    }
}

输出:

4
01.01.2015|07:00-07:15|get up
01.01.2015|16:00-16:30| go home

答案 2 :(得分:0)

使用数组尝试此解决方案:

Scanner sc = new Scanner(new File("file.txt"));
int index;
String[] arr = new String[1];
for(index = 0; sc.hasNextLine(); index++) {
    arr = Arrays.copyOf(arr, index + 1);
    arr[index] = sc.nextLine();
}

for(int i = 0; i<arr.length; i++) {
    System.out.print(arr[i] + "\n");
}

我使用arr = Arrays.copyOf(arr, index + 1)来增加数组的大小以添加下一个元素。

输出

01.01.2015|07:00-07:15|get up
01.01.2015|08:00|get to work
01.01.2015|08:00-16:00| work
01.01.2015|16:00-16:30| go home

答案 3 :(得分:0)

嗯,我花了一些时间。对所有人伸出援助之手。这就是我最终得到的。

  int i=0;
  String array [] new String [100]
  try {
  FileReader textFileReader= new FileReader (fileName);
  BufferedReader textReader= new BufferedReader(textFileReader);
  boolean continue = true; 
    while (continue) {
      String text = textReader.readLine();
        if (text != null){
        array[i] = text;
        i++;
      }else {
     continue = false;
     }
   }
 }catch (Exception e) {}