java - 在 Java 中将 .dat 文件读入数组

标签 java arrays datainputstream dataoutputstream

我正在编写的代码有两个类:writeInts 和 readInts。我编写了 writeInts 来随机生成 0 到 1000 之间的 100 个数字,并将它们输出到 data.dat 文件。

readInts 应该打开一个 DataInputStream 对象并从 data.dat 文件中读取“原始”数据并将这 100 个整数存储在一个数组中。我的问题是我似乎无法正确读取数据。对此的任何帮助将不胜感激。谢谢!

写入整数:

import java.io.*;


public class WriteInts {
    public static void main(String[] args) throws IOException {
        DataOutputStream output = new DataOutputStream(new FileOutputStream("data.dat"));
        int num = 0 + (int)(Math.random());
        int[] counts = new int[100];
        for(int i=0; i<100; i++) {
            output.writeInt(num);
            counts[i] += num;

            System.out.println(num);
        }
        output.close();
    }

}

读整数:

import java.io.*;
import java.util.*;

public class ReadInts {
    public static void main(String[] args) throws IOException {

        // call the file to read
        Scanner scanner = new Scanner(new File("data.dat"));
        int[] data = new int[100];
        int i = 0;
        while (scanner.hasNextInt()) {
            data[i++] = scanner.nextInt();

            System.out.println(data[i]);

            scanner.close();
        }

    }

}

最佳答案

如果要写入二进制数据,请使用DataInputStream/DataOutputStream扫描仪 用于文本数据,您不能混用。

写入整数:

import java.io.*;

public class WriteInts {
    public static void main(String[] args) throws IOException {
        DataOutputStream output = new DataOutputStream(new FileOutputStream(
                "data.dat"));

        for (int i = 0; i < 100; i++) {
            output.writeInt(i);
            System.out.println(i);
        }

        output.close();
    }

}

ReadInts:

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadInts {
    public static void main(String[] args) throws IOException {
        DataInputStream input = new DataInputStream(new FileInputStream(
                "data.dat"));

        while (input.available() > 0) {
            int x = input.readInt();
            System.out.println(x);
        }

        input.close();
    }

}

关于java - 在 Java 中将 .dat 文件读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23141851/

相关文章:

c++ 字符串数组初始化

java - 中断 Java DataInputStream readFully()

java - 关闭数据库连接以避免内存泄漏

java - org.hibernate.hql.internal.ast.QuerySyntaxException 无效路径

C#数组从一行中获取最后一项

java - 确定哪个客户端使用套接字发送数据

java - 是否有一个类在 Java 中公开了一个无缓冲的 readLine 方法?

java - 使用 Berkeley DB API 作为 Spring+JPA 应用程序 (DB2) 的缓存解决方案

java - 由于 Cassandra 没有事务并且所有语句都是原子的,因此如果需要,如何模拟回滚?

PHP 如何使用 laravel 5 将数据从数组保存到 mysql