我很难理解为什么这不起作用。这只是代码中无法正常工作的部分。
用户名和密码作为参数传递给方法。我已经运行了测试打印语句,以确保传递的值是正确的,以及正确分配文件的下一行
fileByteStream = new FileInputStream("credentials.txt");
inFS = new Scanner(fileByteStream);
while (inFS.hasNextLine()){ // If the file has another line
String nextLine = inFS.nextLine(); // Assign that line to a String
if (nextLine.contains(username)) { // Check line for username
System.out.println("USERNAME FOUND!");
if (nextLine.contains(password)) { // Verify password
System.out.println("PASSWORD FOUND!");
这是我的困境。 nextLine.contains(用户名)无法正常工作。它匹配行内任何位置的实例。
我尝试过使用(" \\ b" +用户名+" \\ b")但是,它似乎没有在行中找到用户名而我无法弄清楚原因。
如果用户名匹配,找到密码似乎工作正常。
文本文件中的行格式如下:
user.name MD5hashOfPassword "密码" 作业
答案 0 :(得分:0)
您需要为每一行进行某种预处理。提取您要匹配的部分,以便进行精确检查。
请注意,我在此示例中使用了String#split
,因为它与您提供的示例数据一起使用,但我不知道该行的实际语法。
String nextLine = inFS.nextLine();
String[] parts = nextLine.split("\\w+"); // '+' allows multiple spaces
String usernameFromLine = parts[0];
String passwordFromLine = parts[2];
if(usernameFromLine.equals(username)) {
....
请注意,此示例不检查边界,也不关心语法错误的行。它会崩溃。
答案 1 :(得分:0)
您已经在使用Scanner
,它会进行字符串标记化,但不会真正使用它的强大功能。您可以使用next()
读取令牌,而不是阅读整行然后自己完成工作。如果
while (inFS.hasNextLine()) {
/* Get the username */
String nextUsername = inFS.next();
// Is this the username you're looking for?
if (nextUsername.contains(username)) {
System.out.println("USERNAME FOUND!");
/* Consume the next token, even if you're not going to
do anything with it */
String nextMD5 = inFS.next();
// Next token should be the password
String nextPassword = inFS.next();
if (nextPassword.contains(password)) {
System.out.println("PASSWORD FOUND!");
}
}
// ensure you advance to the next line before starting again
inFS.nextLine();
}
答案 2 :(得分:0)
感谢大家的帮助。这最终最终为我工作。
#home{
/* The image used */
background: url('{{ STATIC_URL }}/store/img/store.jpg') no-repeat;
/* Full height */
height: 100%;
/* Create the parallax scrolling effect */
background-attachment: fixed;
background-position: center;
background-size: cover;
再次感谢您的帮助。非常感谢您的反馈。