java - 如何在需要时从文件中提取元素?

标签 java file-io

我正在尝试编写一个程序来创建玩家对象并将它们保存到文件中(我已经完成了)。 我试图解决的问题是,我希望能够在需要时将玩家从文件中取出。因此,如果我只想获取玩家 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/

相关文章:

java - 无法从java调用kotlin扩展函数

Java - 非文件错误

java - 为什么 createCriteria 返回这么多对象?

java - 如何检查路径是否存在于java中?

c++ - 从文件中读取带空格的字符串

java - Spring Autowiring 实现类

Java Netty - 根据输入消息将结果作为 StringEncoder 或 ObjectEncoder 发送到客户端?

c - 如何使用 select 从 stdin 读取输入?

C# .Net 文件在使用中的问题

c - 二进制文件的 fseek 行为