我是java的新手我想知道如何读取.txt文件然后将每一行放在一个数组单元格中。 .txt文件的格式必须如下所示:
car //goes in array[0]
boat //goes in array[1]
ship //goes in array[2]
airplane //goes in array[3]
//...and so on..
我已经尝试创建以这种方式实现的ReadFile类:
import java.io.*;
import java.util.*;
public class ReadFile {
private Scanner x;
public void open(){
try{
x = new Scanner(new File("time_table_data.txt"));
}catch(Exception e){
System.out.println("Could Not Create The File");
}
}
public String read(){
String s = "";
while(x.hasNext()){
String a = x.next();
s = a.format("%s\n",a);
}
return s;
}
public void close(){
x.close();
}
}
答案 0 :(得分:2)
问题是你不知道有多少单词会出现。要解决这个问题,您可以使用ArrayList。
List<String> entries = new ArrayList<String>();
while (scanner.hasNext())
{
entries.add(scanner.nextLine());
}
System.out.println(entries);
使用get(int index)
方法访问它们:
String test = entries.get(0); // This will be "car"
答案 1 :(得分:2)
如果你愿意使用Apache Commons IO那么你可以很容易地做到这一点:
import org.apache.commons.io.FileUtils;
String[] linesArr = new String[0];
List<String> lines = FileUtils.readLines(new File("FILE_NAME.txt"));
if (lines != null) {
linesArr = lines.toArray(linesArr);
}
答案 2 :(得分:1)
只是做:
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
lines.add(line); // Add line to list
}
} // Try-with-resources closes reader
当您只是寻找整条线路时,您不需要扫描仪或任何其他想象的东西。
如果你真的需要一个数组而不是最后一个列表,你可以从最终的List中读出数组。
答案 3 :(得分:0)
创建一个方法,从文件中读取所有数据并按如下方式存储在List中。
public ArrayList<String> fileRead(String fileName){
File f;
String s;
FileReader fr = null;
BufferedReader br = null;
ArrayList<String> sl = new ArrayList<String>();
try {
f = new File(fileName);
fr = new FileReader(f);
br = new BufferedReader(fr);
while((s=br.readLine())!=null){
sl.add(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(br!=null)
br.close();
if(fr!=null)
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sl;
}