Java 缓冲输出流什么都不做!没有错误!没有留言!怎么了?

标签 java

<分区>

我正在从 Oracle 文档和类(class)中学习 Java,我已经到了这部分(文件 I/O、流等),但我这里有一些代码不起作用,我不确定为什么.我没有收到任何错误或警告,什么都没有,DataOutputStream 根本不会写入文件。

我尝试删除 BufferedOutputStream 并且它是这样工作的,所以我猜测问题出在 Buffered Stream 上,但我不知道为什么。

也许缺少了什么。我真的卡住了。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Principal {

    static final String dataFile = "invoicedata.txt";

    static final double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
    static final int[] units = { 12, 8, 13, 29, 50 };
    static final String[] descs = {
        "Java T-shirt",
        "Java Mug",
        "Duke Juggling Dolls",
        "Java Pin",
        "Java Key Chain"
    };

    public static void main(String[] args) throws IOException {     
        //DECLARATION
        DataOutputStream out = null;
        DataInputStream in = null;

        try {
            out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile)));
            in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile)));

            //WRITING???
            for (int i = 0; i < prices.length; i ++) {
                out.writeDouble(prices[i]);
                out.writeInt(units[i]);
                out.writeUTF(descs[i]);
            }

        } catch (Exception e) {
            System.err.println("ERROR!");
            e.printStackTrace();
        }

        double price;
        int unit;
        String desc;
        double total = 0.0;

        //READING
        try {
            while (true) {
                price = in.readDouble();
                unit = in.readInt();
                desc = in.readUTF();
                System.out.format("You ordered %d" + " units of %s at $%.2f%n",
                    unit, desc, price);
                total += unit * price;
            }
        } catch (EOFException e) {
            System.err.println("END OF FILE!");
        }       
    }   
}

最佳答案

您需要在代码中添加 out.close() 以在所有内容写入文件后关闭 DataOutputStream。

关于Java 缓冲输出流什么都不做!没有错误!没有留言!怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236637/

相关文章:

java - 需要标识符吗?

java - valueOf 抛出 NumberFormatException

java - 将空值 JTextFormatted 插入双列到 mysql

java - 项目运行时自动选择EditText

java - 如何使用 Elasticsearch async api 控制响应

java - ASN.1 Java 编译器

java - 在android中的asynctask中等待一个异步任务

java - 在主线程/程序终止时运行方法?

java - 无法将 MP3 文件移动到其他文件夹

java - 总是重定向到登录?Spring 授权错误