FileReader只能读取txt文件的第三行吗?

时间:2017-06-26 13:19:47

标签: java login passwords filereader

我正在制作登录系统,在您注册时使用加密器     存储一个加密密码,然后在登录时解密     制作,并最终将与用于登录的用户进行比较,看看是否可以     比赛。     我存储凭据的方式是:

  • 第1行的用户名
  • 第二封电子邮件
  • 第3次密码

如何让文件阅读器只读第3行? 语言是Java,这都是在JFrame表单中完成的。

提前感谢您的时间。

3 个答案:

答案 0 :(得分:1)

最好的办法是为每个部分分配一些字节。例如,如果为用户名分配50个字符,电子邮件分配50个字符,密码分配50个字符,则可以执行以下操作:

File f = ...;
FileReader reader = new FileReader(f);
fin.skip(100);
char[] chars = new char[50];
int numCharsRead = fin.read(chars); //confirm numCharsRead is 50

答案 1 :(得分:1)

  

如何让文件阅读器只读第3行?

你做不到。基本上,读者需要读取所有行,忽略它不感兴趣的行。

提示:看BufferedReader.readLine();请参阅@ noscreename的回答。

FileReader无法做到这一点的原因是,在您完全阅读之前,您不知道每行的时长。由于使用Reader.skip(...)RandomAccessFile.seek(...)要求你知道要跳过多少字节/字符,它们在这里不适用。)

然而,你在这里想做的是一个坏主意。

  1. 每次要对用户进行身份验证时,从文件中按顺序读取“记录”不会扩展。您拥有的帐户越多,登录所需的时间就越长。

  2. 将密码以明文形式存储在文件中是不好的安全措施。存储在文件中加密的密码几乎一样糟糕。相反,你应该存储种子密码哈希值;请参阅salt上的维基百科页面。

答案 2 :(得分:0)

String file = "your_file_path";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

String password = "";
boolean end = false;
try {
    while (true) {
        reader.readLine();
        reader.readLine();
        password = reader.readLine();
        // do stuff with password
    }
} catch (EOFException e) {
   // end of file reached. will break the loop
} catch (IOException e) {
   // handle exceptions
} finally {
    reader.close();
}