如何使用Java从文本文件返回完整的字符串行
因此,我正在尝试编写一个java应用程序,其中有一个文本文件,其中包含一些数据,如:id、用户名、密码,并且每条记录都位于新行上。我试图实现的是,例如,如果用户输入“vick”,我希望能够在文本文件中搜索包含“vick”的用户名,并返回id、用户名和密码 这就是我到目前为止所做的:如何使用Java从文本文件返回完整的字符串行,java,Java,因此,我正在尝试编写一个java应用程序,其中有一个文本文件,其中包含一些数据,如:id、用户名、密码,并且每条记录都位于新行上。我试图实现的是,例如,如果用户输入“vick”,我希望能够在文本文件中搜索包含“vick”的用户名,并返回id、用户名和密码 这就是我到目前为止所做的: import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataInputStream; import ja
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Scanner;
public class tests {
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\Vick\\PT\\Tests\\src\\users.txt");
String[] UserToken = null;
BufferedReader br = new BufferedReader(new FileReader(file));
int lineCount = 0;
while(br.readLine() != null)
{
lineCount++;
}
br.close();
Scanner inputeFile = new Scanner(file);
int uid = 0;
String username = null;
String password = null;
while(inputeFile.hasNext())
{
String str = inputeFile.nextLine();
UserToken = str.split(",");
uid = Integer.parseInt(UserToken[0]);
username = UserToken[1];
password = UserToken[2];
//Users u1 = new Users(uid, username, password);
//System.out.println(UserToken[0] + " - " + UserToken[1] + " - " + UserToken[2]);
}
Users u1 = new Users(uid, username, password);
Scanner search = new Scanner(System.in);
System.out.println("Search for user: ");
String searchterm = search.next();
while(inputeFile.hasNext())
{
if(u1.getUsername().contains(searchterm))
{
System.out.println("HE!");
}
}
}
}
这是我尝试使用的用户类
public class Users {
public int userid;
public static String username;
public String password;
public Users(int userid, String username, String password)
{
userid = userid;
username = username;
password = password;
}
public int getUID()
{
return userid;
}
public static String getUsername()
{
return username;
}
public String getPassword()
{
return password;
}
}
--正如该线程中的某个人已经说过的,使用hasNextLine()
--你的代码效率不高。(首先循环所有行以获得计数,然后再次循环以读取)。我的代码也可以改进,但我将把它作为练习。
--我测试的样本文件
1,test,lol
2,robot,small
--
所以我离做对这件事不远了?谢谢你,没问题。你看起来像个Java初学者。坚持住。你就在不远处。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Tests {
public static void main(String[] args) throws IOException {
Scanner search = new Scanner(System.in);
System.out.println("Search for user: ");
String searchterm = search.next();
File file = new File("/tmp/users.txt");
String[] UserToken = null;
BufferedReader br = new BufferedReader(new FileReader(file));
Scanner inputeFile = new Scanner(file);
int uid = 0;
String username = null;
String password = null;
while(inputeFile.hasNext())
{
String str = inputeFile.nextLine();
UserToken = str.split(",");
uid = Integer.parseInt(UserToken[0]);
username = UserToken[1];
password = UserToken[2];
// make user object here if you want to
if (username.contains(searchterm))
{
System.out.println(str);
}
}
}
}