Java 有没有办法读取文本文件中的特定行?
我正在做一个从2文本文件读取的gui日志。用户名行与密码中的行匹配。如果用户名在第3行,则密码将在password.txt中的第3行。如果用户名和密码与username.txt和password.txt匹配,系统将让您登录。我可以从用户名文本中获取特定的行号,但当读取password.txt时,我会一直获取null 我试着用扫描仪,但我不需要读每一行。我只需要读一下具体的一行Java 有没有办法读取文本文件中的特定行?,java,string,user-interface,readfile,Java,String,User Interface,Readfile,我正在做一个从2文本文件读取的gui日志。用户名行与密码中的行匹配。如果用户名在第3行,则密码将在password.txt中的第3行。如果用户名和密码与username.txt和password.txt匹配,系统将让您登录。我可以从用户名文本中获取特定的行号,但当读取password.txt时,我会一直获取null 我试着用扫描仪,但我不需要读每一行。我只需要读一下具体的一行 private class ButtonHandler implements ActionListener
private class ButtonHandler implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
try {
File f1=new File("username.txt");
File f2=new File ("password.txt");
String[] words=null;
FileReader fr1 = new FileReader(f1);
FileReader fr2 = new FileReader(f2);
BufferedReader br1 = new BufferedReader(fr1);
BufferedReader br2 = new BufferedReader(fr2);
String s;
String user = username.getText();
String pass=String.valueOf(password.getPassword());
String usertxt = " ";
String passtxt=" ";
int count =0;
while((s=br1.readLine())!=null) //Reading Content from the file
{
words=s.split(" "); //Split the word using space
for (String word : words)
{
if (word.equals(user)) //Search for the given word
{
System.out.print(count);
for (int i = 0; i < count; i++)
{
br2.readLine();
passtxt = br2.readLine();
}
System.out.print(passtxt);
if(pass.equals(passtxt))
JOptionPane.showMessageDialog(null,"User has logged in");
}
}
count++;
}
}
catch (IOException e)
{
System.out.println("Uh oh, got an IOException error!");
e.printStackTrace();
}
}
}
私有类ButtonHandler实现ActionListener
{
已执行的公共无效操作(操作事件)
{
试一试{
文件f1=新文件(“username.txt”);
文件f2=新文件(“password.txt”);
String[]words=null;
FileReader fr1=新的FileReader(f1);
FileReader fr2=新的FileReader(f2);
BufferedReader br1=新的BufferedReader(fr1);
BufferedReader br2=新的BufferedReader(fr2);
字符串s;
字符串user=username.getText();
String pass=String.valueOf(password.getPassword());
字符串usertxt=“”;
字符串passtxt=“”;
整数计数=0;
while((s=br1.readLine())!=null)//从文件中读取内容
{
words=s.split(“”;//使用空格拆分单词
for(字符串字:字)
{
if(word.equals(user))//搜索给定的单词
{
系统输出打印(计数);
for(int i=0;i
我希望字符串pass等于passtxt。如果您知道行从哪个字节位置开始,您可以使用RandomAccessFile并查找文件中的该位置 方法文档(seek)允许您将读取指针精确定位在需要的位置。然后可以使用读取方法从文件中获取数据 但是,这可能对您不起作用,因为第三行几乎肯定会从文件中的随机位置开始。随机位置是因为前两行的长度是可变的 因此,除非您读取文件以确定第3行的起始位置,否则随机访问在这个问题中几乎没有用处 如果您的文件是属性文件(例如)或其他结构(json等)的形式,那么您可以始终使用库来帮助您读取文件内容并提取所需的数据 有关如何从文件加载属性的示例,可以参考该方法 请注意,使用库访问文件可能会导致在库中读取整个文件。因此,如果您的目标是最小化I/O,并且输入文件很大,那么您可能无法实现该目标
IMHO,最简单的方法是读取并丢弃第一行,直到到达所需的行,然后处理它们在函数的哪个部分出现“我得到的都是空的”?你是说你得到了一个NullPointerException吗?如果是,它发生在哪一行?