java - 逐个字符地从 txt 文件中读取文本(用户:pass)
问题描述
我试图从 Java 中的 .txt 文件中读取用户名和密码。文件格式如下:
user1:pass1
user2:pass2
user3:pass3
我的代码无法正确读取密码,有什么提示吗?编辑:也缺少最后一个密码,因为 last\n
丢失了,有什么方法可以修复它而不是在 txt 文件中添加额外的换行符?
try {
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
int c;
String user = "";
String pass = "";
char helper = 0;
while(( c = bufferedReader.read()) != -1 ) {
System.out.println((char)c);
if((char)c == '\n') {
ftpServer.addUser(user, pass);
//System.out.printf("%s", pass);
user = "";
pass = "";
helper = 0;
} else {
if ((char) c == ':') {
helper = ':';
}
if (helper == 0) {
user += (char) c;
}
if (helper == ':') {
if ((char) c != ':')
pass += (char) c;
}
}
}
bufferedReader.close();
}
解决方案
如果使用 JAVA:8 和 8+,您可以在文件上使用流 - java.nio.files
Path path = Paths.get(filename);
try (Stream<String> lines = Files.lines(path)) {
lines.forEach(s -> {
if (s.contains(":")) {
String[] line = s.split(":");
String userName = line[0];
String pass = line[1];
System.out.println("User name: " + userName + " password: " + pass);
}
});
} catch (IOException ex) {
// do something or re-throw...
}
或者使用 BufferedReader
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader("/Users/kants/test.txt"));
String lineInFile = reader.readLine();
while (lineInFile != null) {
if (lineInFile.contains(":")) {
String[] line = lineInFile.split(":");
String userName = line[0];
String pass = line[1];
System.out.println("User name: " + userName + " password: " + pass);
}
lineInFile = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
注意:您必须添加进一步的null
检查和try-catch
处理。上面的代码只是为了向您展示逻辑。
推荐阅读
- uwp - 如何以编程方式强制 IAsyncOperation 进入错误状态?
- python-3.x - 如何在 Selenium 中选择文本区域?
- javascript - 同一个数组有不同的长度?
- powershell - 需要为 powershell 中的搜索文件导入和转换 HTML
- google-cloud-platform - Google Cloud Platform REST API 中的 OAUTH_TOKEN
- javascript - 要求 HTML 表单日期字段在特定时间范围参数内
- javascript - 使用 javascript,如何使字符串只有字母、数字和句点。删除所有其他字符
- ios - dyld:无法加载插入的库,但适用于模拟器和另一部 iPhone
- c++ - 谁能告诉我我用 getline 格式做错了什么(cpp)
- python - 尝试在 Windows 10 上安装 psycopg2 时遇到问题