在文本文档中搜索一行 - JAVA

时间:2012-04-18 00:01:48

标签: java netbeans login

我正在尝试创建一个可以从文本文件中读取用户名和密码的登录屏幕。我已经建立了注册页面,通过执行以下命令将用户名和密码输出到文件中:

try (BufferedWriter out = new BufferedWriter(fstream)) {
            try {
              out.write(username + " " + password);
              out.newLine();
              JOptionPane.showMessageDialog(null,"User Account '" + username + "'     Created");
            } catch (IOException ex) {
                Logger.getLogger(ServerMenu.class.getName()).log(Level.SEVERE, null, ex);
            }
       }

文本文件将如下所示:

user1 password1
user2 password2

我一直在阅读大量的文档来尝试找出这个,但是我读的越多,我就越困惑。我这样做的原因是我可以继续读取和写入.dat文件,以获取系统最终会保存的信息。

如果有人可以以任何形式帮助我,那将是惊人的形式!

由于

C

2 个答案:

答案 0 :(得分:1)

快速简便的解决方案。每行都有评论,但如果您需要任何帮助,或者如果您有任何问题,请告知我们。

import java.io.*;
class FileRead 
{
 public static boolean main(String lineToCompare)
  {
  try{
  // Open the file that is the first 
  // command line parameter
  FileInputStream fstream = new FileInputStream("textfile.txt");

  // Get the object of DataInputStream
  DataInputStream in = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(in));

  String strLine;
  //Read File Line By Line

  while ((strLine = br.readLine()) != null)   {
  //Compare the line with the line to compare (string)
  if(strLine.compareTo(lineToCompare) == 0)
      return true;
  }

  //Close the input stream
  in.close();
    }catch (Exception e){//Catch exception if any
     System.err.println("Error: " + e.getMessage());
  }

  return false;

  }
}

答案 1 :(得分:0)

我真的不确定您是否要为特定用户名和密码或所有用户名和密码执行上述代码。

如果您想从文件中获取特定行,并且您已经可以访问要阅读的行的偏移​​量,则可以使用RandomAccessFile。此类允许您将文件指针移动到某个位置,然后您只需阅读下一行即可获取用户名和密码。

但是,如果您想要读取特定行但没有该行可能在输入文件中的信息,则需要读取每一行(例如,使用BufferedReader)来查找一行你需要。如果要逐行读取文件,也可以采用这种方法。