BufferedWriter未写入.txt文件[JAVA]

BufferedWriter未写入.txt文件[JAVA],java,client-server,bufferedreader,bufferedwriter,Java,Client Server,Bufferedreader,Bufferedwriter,目标:服务器从客户端发送的文本文件中读取数据。服务器将此数据存储在另一个文本文件中 问题:我能够读入文本文件并将其打印到控制台,但是,当我使用BufferedWriter运行代码并在之后打开新文本文件时,该文件为空。我不完全确定我是否错误地使用了BufferedWriter函数,或者是否遗漏了任何关键函数 代码: 您的代码不完整。我会突发奇想,假设你的问题 加 在代码末尾。您从未对BufferedWriter实例调用flush或close,事实上,您完全忽略了它。此外,您的资源管理不存在。如果打

目标:服务器从客户端发送的文本文件中读取数据。服务器将此数据存储在另一个文本文件中

问题:我能够读入文本文件并将其打印到控制台,但是,当我使用BufferedWriter运行代码并在之后打开新文本文件时,该文件为空。我不完全确定我是否错误地使用了BufferedWriter函数,或者是否遗漏了任何关键函数

代码:


您的代码不完整。我会突发奇想,假设你的问题

在代码末尾。

您从未对BufferedWriter实例调用flush或close,事实上,您完全忽略了它。此外,您的资源管理不存在。如果打开资源,则应将其关闭

例如

FileReader file = new FileReader("client-temp.txt");
try (BufferedReader tc = new BufferedReader(file)) {
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("datastore.txt"))) {

        String line;

        while ((line = tc.readLine()) != null)
        {
            String[] data = line.split(",");
            String sensortype = data[0];
            String date = data[1];
            String time = data[2];
            String reading = data[3];

            String newdata = sensortype + date + time + reading;
            System.out.println(line);

            if (line != null)
            {
                bw.write(line);
                bw.newLine();
            }

            System.out.println("Data sent to file");
        }
    } catch (IOException exp) {
        exp.printStackTrace();
    }
} catch (IOException exp) {
    exp.printStackTrace();
}
有关更多详细信息,请参阅


ps:您可以复合try with resource语句,在同一try中打开多个资源。。。{section,但我想展示一下基本概念

你没有刷新或关闭编写器……此外,你到底在哪里给bw写过信?我用了out.flush?@MadProgrammer但什么是out?我看到的是bw,它从来没有被使用过…@MadProgrammer哦,我明白了。我用错了名字
out.close();
FileReader file = new FileReader("client-temp.txt");
try (BufferedReader tc = new BufferedReader(file)) {
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("datastore.txt"))) {

        String line;

        while ((line = tc.readLine()) != null)
        {
            String[] data = line.split(",");
            String sensortype = data[0];
            String date = data[1];
            String time = data[2];
            String reading = data[3];

            String newdata = sensortype + date + time + reading;
            System.out.println(line);

            if (line != null)
            {
                bw.write(line);
                bw.newLine();
            }

            System.out.println("Data sent to file");
        }
    } catch (IOException exp) {
        exp.printStackTrace();
    }
} catch (IOException exp) {
    exp.printStackTrace();
}