Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文件中读取特定行,并将数据从一行中分离出来_Java_File - Fatal编程技术网

Java 从文件中读取特定行,并将数据从一行中分离出来

Java 从文件中读取特定行,并将数据从一行中分离出来,java,file,Java,File,我对java相当陌生,因此任何帮助都将不胜感激 我试图编写一个程序,询问用户从哪个文件读取,然后它要求一个ID,在文件中搜索该ID,然后从该行输出信息。 它将从中读取的文本文件的格式如下: 苹果^201^3 香蕉^202^4 橙色^205^5 2nd列用于标识 此外,我还需要将信息分开,以便以如下方式输出: 项目:苹果 ID:201: 价格:3美元 由于字符串拆分采用正则表达式且^具有正则表达式的含义,因此需要对其进行反斜杠 String input = fin.nextLine();

我对java相当陌生,因此任何帮助都将不胜感激

我试图编写一个程序,询问用户从哪个文件读取,然后它要求一个ID,在文件中搜索该ID,然后从该行输出信息。 它将从中读取的文本文件的格式如下:

苹果^201^3

香蕉^202^4

橙色^205^5

2nd
列用于标识

此外,我还需要将信息分开,以便以如下方式输出:

项目:苹果

ID:201:

价格:3美元


由于字符串拆分采用正则表达式且
^
具有正则表达式的含义,因此需要对其进行反斜杠

    String input = fin.nextLine();  // e.g. Banana^202^4
    System.out.println(input.split("\\^")[2]);
publicstaticvoidmain(字符串[]args)引发IOException{
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入文件名>>”;
字符串文件名=keyboard.nextLine();
System.out.println(“输入项目ID:”);
字符串fructId=Integer.toString(keyboard.nextInt());
try(BufferedReader buffer=new BufferedReader(new FileReader(filename))){
弦线;
而((line=buffer.readLine())!=null){
String[]tokens=line.split(\\^);
if(tokens.length<3&&!tokens[1].equals(水果ID))
继续;
System.out.println(“项:+tokens[0]);
System.out.println(“ID:+tokens[1]);
System.out.println(“价格:$”+代币[2]);
打破
}
}
捕获(例外情况除外){
例如printStackTrace();
}
}
  • 通过“^”,检查您至少有3个令牌,如果第二个令牌等于输入ID,则打印它们
  • ,您可以对资源使用
    try
    ,以确保在语句末尾关闭每个资源
  • 找到特定行后,可以使用
    break
    来避免解析文件的其余部分
Gues这就是您想要的:
    String input = fin.nextLine();  // e.g. Banana^202^4
    System.out.println(input.split("\\^")[2]);
public static void main(String[] args) throws IOException {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter a filename >> ");
    String filename = keyboard.nextLine();
    System.out.println("Enter item ID: ");
    String fruitID = Integer.toString(keyboard.nextInt());

    try (BufferedReader buffer = new BufferedReader(new FileReader(filename))) {
        String line;
        while ((line = buffer.readLine()) != null) {
            String[] tokens = line.split("\\^");
            if (tokens.length < 3 && !tokens[1].equals(fruitID))
                continue;
            System.out.println("Item: " + tokens[0]);
            System.out.println("ID: " + tokens[1]);
            System.out.println("Price: $" + tokens[2]);
            break;
        }
    }
    catch (Exception ex){
        ex.printStackTrace();
    }
}
Hope this will help


import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FindGivenStringFromFile {

    public static void main(String args[]) throws FileNotFoundException {

        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter a filename >> ");
        String filename = keyboard.nextLine();

        File f = new File(filename);
        Scanner fin = new Scanner(f);

        System.out.println("Enter item ID: ");
        int fruitID = keyboard.nextInt();

        //Reading each line of file using Scanner class
        int lineNumber = 1;
        while (fin.hasNextLine()) {
            String line = fin.nextLine();
            String[] lineDataArray = line.split("\\^");
            if(lineDataArray != null && lineDataArray.length >2){
                if(Integer.parseInt(lineDataArray[1]) == fruitID){
                    System.out.println("Item: " + lineDataArray[0]);
                    System.out.println("Id: " + lineDataArray[1]);
                    System.out.println("price: $" + lineDataArray[2]);
                }

            lineNumber++;
        }       

    }   
}
}