Java 一次读取一行.db文件中的文本

Java 一次读取一行.db文件中的文本,java,Java,首先,我不知道.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

首先,我不知道.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"
字符串表[]=新字符串[100]

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

假设您的第一个代码块实际上是您试图读取的文件的副本,您可以执行以下操作:

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

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

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

同样,如果您确实想使用数组,可以使用
行转换列表。toArray

假设您的第一个代码块实际上是您试图读取的文件的副本,您可以执行以下操作:

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

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

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

同样,如果您确实想使用数组,可以使用
行转换列表。toArray

假设您的第一个代码块实际上是您试图读取的文件的副本,您可以执行以下操作:

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

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

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

同样,如果您确实想使用数组,可以使用
行转换列表。toArray

假设您的第一个代码块实际上是您试图读取的文件的副本,您可以执行以下操作:

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

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

List<String> lines = Files.lines(Paths.get("big.txt"))
                          .collect(Collectors.toList());
List line=Files.line(path.get(“big.txt”))
.collect(Collectors.toList());
同样,如果您确实想使用数组,可以使用
行转换列表。toArray
因为您可以使用Java 8,并且:

输出:

4
01.01.2015|07:00-07:15|get up
01.01.2015|16:00-16:30| go home
由于Java 8,您可以使用,并且:

输出:

4
01.01.2015|07:00-07:15|get up
01.01.2015|16:00-16:30| go home
由于Java 8,您可以使用,并且:

输出:

4
01.01.2015|07:00-07:15|get up
01.01.2015|16:00-16:30| go home
由于Java 8,您可以使用,并且:

输出:

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

使用阵列尝试此解决方案:

代码
使用阵列尝试此解决方案:

代码
使用阵列尝试此解决方案:

代码
使用阵列尝试此解决方案:

代码
我花了好几个小时。感谢所有伸出援手的人。这就是我最后得到的

  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) {}

我花了好几个小时。感谢所有伸出援手的人。这就是我最后得到的

  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) {}

我花了好几个小时。感谢所有伸出援手的人。这就是我最后得到的

  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) {}

我花了好几个小时。感谢所有伸出援手的人。这就是我最后得到的

  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) {}


您的第一个文本块(“起床,开始工作,…”)是实际的文件内容还是从数据库提示符复制/粘贴的?如果您不知道.db文件有多大,请不要使用字符串数组,使用数组。这是您的第一个文本块(“起床,开始工作,…”)实际文件内容还是从数据库提示符复制/粘贴?如果您不知道.db文件有多大,请不要使用字符串数组,使用数组显示第一个文本块(“起来,开始工作,…”)实际文件内容还是从数据库提示符复制/粘贴?如果您不知道.db文件有多大,不要使用字符串数组,使用数组列出您的第一个文本块(“起床,开始工作,…”)实际文件内容,还是从数据库提示符复制/粘贴?如果您不知道.db文件有多大,不要使用字符串数组,使用数组列表
LinkedList
在这里应该更合适(因为有多个
add()
),不是吗?@Nizil不是。ArrayList更快,内存消耗更低。@talex我同意内存消耗,但是
ArrayList
并不总是更快(请参阅)。在这种情况下,我想这取决于要读取的行数和列表的初始容量。@Nizil不幸的是,答案是错误的,但这并不重要,因为在我们的例子中,我们是追加而不是插入。这个操作对ArrayList具有恒定的摊销复杂性。在从ArrayList更改为LinkedList之前,我做了基准测试。(我原以为ArrayList在实践中会更快。)但LinkedList在超过50万行的输入中获胜:-),@talex,我的答案有问题吗?
LinkedList
在这里应该更合适(因为有多个
add()
),不是吗?@Nizil不是。ArrayList更快,内存消耗更低。@talex我同意内存消耗,但是
ArrayList
并不总是更快(请参阅)。在这种情况下,我想这取决于要读取的行数和列表的初始容量。@Nizil不幸的是,答案是错误的,但这并不重要,因为在我们的例子中,我们是追加而不是插入。这个操作对ArrayList具有恒定的摊销复杂性。在从ArrayList更改为LinkedList之前,我做了基准测试。(我原以为ArrayList在实践中会更快。)但LinkedList在超过50万行的输入中获胜:-),@talex,我的答案有问题吗?
LinkedList
在这里应该更合适(因为有多个
add()
),不是吗?@Nizil不是。ArrayList更快,内存消耗更低。@talex我同意内存消耗,但是
ArrayList
并不总是更快(请参阅)。在这种情况下,我想这取决于l的数量