Java 从文件中读取并在另一个文件中写入某些部分

Java 从文件中读取并在另一个文件中写入某些部分,java,formatted-input,Java,Formatted Input,我必须读取文本文件并格式化输入。我不熟悉java从文件中读取,我不知道如何处理我所读取的部分内容 以下是初始文件: 我必须在另一个文件中写入以下输出: 平均,乔,44,31,18,12,9,10 我已经设法将文件中的所有内容打印到输出。我需要帮助,只是把我需要的输出打印到屏幕上。感谢您的帮助 这是我到目前为止写的: public class FileParsing { public static String read(String filename) throws IOException {

我必须读取文本文件并格式化输入。我不熟悉java从文件中读取,我不知道如何处理我所读取的部分内容 以下是初始文件:

我必须在另一个文件中写入以下输出: 平均,乔,44,31,18,12,9,10

我已经设法将文件中的所有内容打印到输出。我需要帮助,只是把我需要的输出打印到屏幕上。感谢您的帮助

这是我到目前为止写的:

public class FileParsing {
public static String

read(String filename) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\Bogdi\\Desktop\\example.txt"));

String s;
StringBuilder sb = new StringBuilder();
while((s = in.readLine())!= null)   sb.append(s + "\n");

in.close();

return sb.toString();
}

很高兴知道您正在使用StringBuilder组件,而不是连接字符串值,方法:

除了了解Java.ioAPI来处理文件外,您还需要一些逻辑来获得预期的结果。在这里,我提出了一种方法,可以帮助你,但不是完美的,但可以告诉你如何面对这个问题

//Reference to your file
    String myFilePath = "c:/dev/myFile.txt";
    File myFile = new File(myFilePath);

    //Create a buffered reader, which is a good start
    BufferedReader breader = new BufferedReader(new FileReader(myFile));
    //Define this variable called line that will evaluate each line of our file
    String line = null;
    //I will use a StringBuilder to append the information I need
    StringBuilder appender = new StringBuilder();

    while ((line = breader.readLine()) != null) {
        //First, I will obtain the characters after "equals" sign
        String afterEquals = line.substring(line.indexOf("=") + 1, line.length());

        //Then, if it contains digits...
        if (afterEquals.matches(".*\\d+.*")) {
            //I will just get the digits from the line
            afterEquals = afterEquals.replaceAll("\\D+","");
        }

        //Finally, append the contents
        appender.append(afterEquals);
        appender.append(",");//This is the comma you want to include
    }

    //I will delete the last comma
    appender.deleteCharAt(appender.length() - 1);

    //Close the reader...
    breader.close();

    //Then create a process to write the content
    BufferedWriter myWriter = new BufferedWriter(new FileWriter(new File("myResultFile.txt")));
    //Write the full contents I get from my appender :)
    myWriter.write(appender.toString());
    //Close the writer
    myWriter.close();
}

希望这能帮助你。快乐编码

如果您的目标是在另一个文件中执行指定的输出,则在处理之前不需要先在StringBuilder中获取文件内容,您可以将处理后的数据直接附加到StringBuilder中,然后将结果写入文件中。下面是一个适用于给定文件的示例,但如果密钥将来发生更改,您可能必须对其进行修改:

以下方法将正确处理文件中的数据

public static String read(String filename) throws IOException {
    BufferedReader in = new BufferedReader(new FileReader(filename));

    String s;
    StringBuilder sb = new StringBuilder();
    while((s = in.readLine())!= null) {
        String[] split1 = s.split("=");

        if (split1[0].equals("name")) {

            StringTokenizer tokenizer = new StringTokenizer(split1[1]);
            sb.append(tokenizer.nextToken());
            sb.append(",");

            sb.append(tokenizer.nextToken());
            sb.append(",");


        } else if (split1[0].equals("index")) {

            sb.append(split1[1] + ",");

        } else if (split1[0].equals("FBid")) {
            sb.append(split1[1]);

        } else {

            StringTokenizer tokenizer = new StringTokenizer(split1[1]);
            String wasted = tokenizer.nextToken();

            sb.append(tokenizer.nextToken() + ",");

        }

    }

    in.close();

    return sb.toString();
}
下一个方法将向文件读取任何字符串

public static void writeStringToFile(String string, String  filePath) throws IOException {

    BufferedWriter writer = new BufferedWriter(
            new FileWriter(
                    new File(filePath)
                    )
            );

    writer.write(string);

    writer.newLine();
    writer.flush();
    writer.close();

}
下面是一个简单的测试File1.txt,它包含了您在paste bin上共享的文件中的数据,我将它们写到另一个文件中

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

    String datas = read("C:\\Tests\\File1.txt");
    System.out.println(datas);

    writeStringToFile(datas, "C:\\Tests\\FileOuput.txt" );


}
它将产生您所期望的准确输出

[EDIT]@idk,很明显,您在执行我的示例时遇到了一个异常,而它对我来说运行良好。这可能只意味着在数据级别存在错误。这是我使用的数据示例,我相信我完全复制了您共享的数据

结果如下:


您可以使用的完整示例:Files.writePath.getfilePath、string.getByTess标准字符集.UTF_8;对于一个更紧凑的编写器,我运行它时会产生一个错误。线程main java.lang.ArrayIndexOutOfBoundsException中的异常:1在gdf.Something.FileParsingFileParsing.java:38在gdf.main.mainMain.java:5有什么建议吗?错误指的是这行代码:StringTokenizer tokenizer=new StringTokenizersplit1[1]@Idk根据我从您共享的链接中获取的数据,我没有错误。@Idk我只是发布了我使用的数据以及结果。我仍然没有错误。自第一次出版以来,您是否更新了数据?最美好的祝福。