所以我正在做一个学校的项目,而我在解决这个问题时遇到了麻烦。
登录后,程序通过套接字用户名和密码作为一个字符串发送到服务器,当字符串到达时,我使用功能split将它分成两部分
String [] split = msgc.split(",");
String username = split[0];
String password = split[1];
因此,存储登录信息的文件实际上就是这样,类似于CSV
26,johndoe,password,john,doe,123456
...
其中“ johndoe”和“ password”当然是用户名和密码..然后我被困在这里。我如何查看从套接字发送的用户名和密码是否等于文件中的登录信息?
您必须加载该文本文件,然后搜索与您拥有的实际值匹配的任何条目:
public class ReadFile {
public static void main(String args[]) {
List<String[]> authDB = createLoginDB("PATH_TO_LOGIN_DB_TEXT_FILE");
isValid(authDB, "USERNAME", "PASSWORD");
}
private static List<String[]> createLoginDB(String fileName) {
List<String[]> result = null;
try (Stream<String> linesStream = Files.lines(Paths.get(fileName))) {
result = linesStream.map(line -> line.split(",")).collect(Collectors.toList());
} catch (IOException e) {}
return result;
}
private static boolean isValid(List<String[]> authDB, String username, String password) {
return authDB.stream()
.filter(fields -> fields[1].equals(username) && fields[2].equals(password))
.findAny().isPresent();
}
}
在先前的代码中,createLoginDB
方法返回List
;列表中的每个元素都是您的文本文件中的一个条目,已经分为String[]
。
然后使用该数据结构使用isValid
方法搜索匹配项。