首先,我不知道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();
}
}
答案 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) {}