我正在尝试编写一个程序来创建玩家对象并将它们保存到文件中(我已经完成了)。 我试图解决的问题是,我希望能够在需要时将玩家从文件中取出。因此,如果我只想获取玩家 1 或玩家 n 的信息,只要他们的详细信息,是否有办法在需要时从文件中提取它?
任何帮助或想法将不胜感激。
非常感谢您提前提供的帮助。
package p;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Runner {
public static final Scanner input = new Scanner(System.in);
public static void main(String[] args) throws IOException {
FileWriter writer = new FileWriter("output.txt", true);
PlayerData player = null;
List<PlayerData> players = new ArrayList<>();
System.out.println("How many players do you want to register? : ");
int num = input.nextInt();
while (true) {
System.out.println("Plz enter Name : ");
String name = input.next();
writer.write("Name: " + name + System.lineSeparator());
System.out.println("Plz enter age : ");
String age = input.next();
writer.write("Age: " + age + System.lineSeparator());
System.out.println("Plz enter Player_id : ");
String player_id = input.next();
writer.write("Player_id: " + player_id + System.lineSeparator());
System.out.println("Plz enter agent_id : ");
String agent_id = input.next();
writer.write("Agent_id:" + agent_id + System.lineSeparator());
System.out.println("Plz enter status : ");
String status = input.next();
writer.write("Status: " + status + System.lineSeparator());
System.out.println("Plz enter position : ");
String position = input.next();
writer.write("Position: " + position + System.lineSeparator());
System.out.println("Plz enter valuation : ");
Double valuation = input.nextDouble();
writer.write("Value: " + valuation + System.lineSeparator());
writer.write("\n " + System.lineSeparator());
System.out.println("\n");
player = new PlayerData(name, age, player_id, agent_id, valuation, status, position);
players.add(player);
System.out.println("Information Entered: \n" + player + "\n" + "Name : " + name + "\n" + "Age: " + age
+ "Player id: " + player_id + "\n" + "Agent id: " + agent_id + "\n" + "Player Value: " + valuation
+ "\n" + "Player Status:" + status + "\n" + "Player position:" + position + "\n");
writer.close();
if (players.size() == num)
break;
}
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("output.txt")));
String line = " ";
System.out.println("Current Players on the transfer List \n");
while ((line = reader.readLine()) != null) {
System.out.println(line);
} // while
reader.close();// close reader
}
}
最佳答案
也许与此类似,第一个 while 循环应该让您到达玩家名称与您输入的 name 相匹配的位置,接下来的 while 会将接下来的 7 行放入玩家信息列表中。
public FileReader fr = new FileReader("path/to/your/file");
public BufferedReader br = new BufferedReader(fr);
String playerName = "John";
String line;
List<String> playerInfo = new ArrayList<String>();
while((line = br.readLine()) != null){
if (line.contains(playerName))
{
int numLines = 7;
playerInfo.add(line);
while((line = br.readLine()) != null && numLines >= 1){
playerInfo.add(line);
numLines --;
break;
}
break;
}
}
关于java - 如何在需要时从文件中提取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59651277/