2014-03-02 199 views
0

大家好吗?我正在尝试读取文件并将该文件中的每个字符串存储到数组中的元素中。问题是,我不能移动到下一行数据。我假设,当我需要使用一个ArrayList,但我很难找出如何遍历每行上的每个文本,并将其存储到一个元素,然后移动到下一行。我想让每个数据存储在它自己的元素中。另外我将如何调用存储在该元素内的数据?这里是我的代码:将文件读取到数组然后将数组存储到ArrayList中Java

Scanner readPayrollData = new Scanner(new FileReader ("employeeData.dat")); 

String[] employee = new String[3]; 

ArrayList<String> data = new ArrayList<String>(); 

while(readPayrollData.hasNextLine()) 
{ 
    for(int i = 0; i < employee.length; i++) 
    { 
     readPayrollData.hasNext(); 
     employee[i] = readPayrollData.next();  
    } 

    readPayrollData.hasNextLine();   
    data.add(employee); 
} 

System.out.println(data); 
readPayrollData.close(); 
+0

检查如何使用扫描仪通过文件的内容导航的链接。 http://www.javaprogrammingforums.com/file-input-output-tutorials/339-reading-file-line-line-using-scanner-class.html – ray

回答

1
ArrayList<String> list = new ArrayList<String>(); 

Scanner inFile = null; 
try { 
inFile = new Scanner(new File("textfile.txt")); 
} catch (FileNotFoundException e) { 

e.printStackTrace(); 
} 

while(inFile.hasNextLine()){ 
    list.add(inFile.nextLine()); 
} 
+0

对不起,但我是编程新手。你能解释一下这段代码的工作原理吗? –

+0

数组是数据的列表。阵列的大小是固定的;我们必须在初始化时声明它的大小。 ArrayList是动态的。我们被允许添加尽可能多的项目,我们想要一个ArrayList。 在上面的代码中,我声明了一个String类型的ArrayList。 我创建了一个扫描程序,该扫描程序使用给定的文件名接收文件。 Scanner类有一个名为.hasNextLine()的方法,用于检查当前的Scanner对象是否仍然有输入。循环内的代码将扫描器的下一行添加到ArrayList。 – Solace

0
List<String> employee=new ArrayList<>(); 
Scanner fin=null; 
try{ 
fin=new Scanner(new File("employeeData.dat")); 
}catch(Exception e){ 
System.out.println("unable to open file"); 
e.printStackTrace(); 
} 

while(fin.hasNextLine()){ 
employee.add(fin.nextLine()); 
} 

fin.close(); 
+0

我很抱歉,但我是编程新手。你能解释一下这段代码的工作原理吗? –

+0

数组列表将用于存储字符串变量。即文件的每一行。 – Anish6595

+0

数组列表将用于存储字符串变量。 fin将要读取文件。即时通讯在try和catch块中读取文件,因为如果发生错误并且文件由于某种原因无法读取,那么程序流将转移到catch和“e.printStackTrace();”会告诉你为什么文件没有被读取。 while循环基本上检查是否有任何信息出现在文件的下一行,这种情况不断发生,直到它变成错误并退出循环。 add()方法将字符串添加到数组列表中 – Anish6595

相关问题