我想读一个有Account.txt
数字的文件
并希望将每一行保存为一串数组。
防爆。该文件有3行123\n234\n456
。并且字符串数组a具有3个大小,第一个数组应该具有123,第二个 - > 234和第三个 - > 456。
但它不起作用。
提前谢谢。
package javaapplication10;
import java.util.Scanner;
import java.io.*;
public class JavaApplication10
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String temp = " ";
FileWriter fw = null;
FileReader fr = null;
int a=0;
while(true)
{
System.out.println("1) Input new ");
System.out.println("2) display ");
System.out.println("3) Exit");
System.out.print(" Enter your choice : ");
int choice = input.nextInt();
switch(choice)
{
case 1: System.out.println(" Enter new Account number : ");
temp = input.next();
try
{
fw = new FileWriter("Account.txt",true );
fw.write(temp);
fw.write(System.getProperty( "line.separator" ));
fw.flush();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
if(fw!=null)
{
try
{
fw.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
}
break;
case 2: try
{
fr = new FileReader("Account.txt");
int i = 0;
int line =0;
while((i = fr.read()) != -1)
{
if(i == '\n')
line++;
}
String s[] = new String[line];
a=0;
i=0;
System.out.println("2");
for(int j=0; j<line;j++)
{
while((i = fr.read())!=10)
{
if(i!=-1)
{
System.out.println(String.valueOf(i));
s[j] = s[j].concat(String.valueOf(i));
}
else
break;
}
System.out.println(s[j]);
}
}
catch(FileNotFoundException ex)
{
ex.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally
{
if(fr!=null)
{
try
{
fr.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
fr = null;
}
}
break;
case 3: System.exit(0);
default: System.out.println(" Wrong Choice !!!");
}
}
}
}
答案 0 :(得分:2)
您尝试两次读取文件。在第一个循环之后:
while((i = fr.read()) != -1)
{
if(i == '\n')
line++;
}
您的filepointer位于文件末尾。因此,在您的第二个循环中,您没有更多内容可供阅读。