当前位置: 首页 > 知识库问答 >
问题:

试图从二进制文件读取到数组

扶文光
2023-03-14

我在做学校作业,要求如下:“设计一个具有名为writeArray的静态方法的类。该方法应包含两个参数:文件名和对int数组的引用。该文件应作为二进制文件打开,数组的内容应写入该文件,然后关闭该文件。在名为readArray的类中写入第二个方法。该方法我们需要两个参数:文件名和对int数组的引用。应该打开文件,从文件中读取数据并存储在数组中,然后关闭文件。在程序中演示这两种方法。"

以下是我到目前为止的课程和演示代码:

import java.io.*;

public class FileArray

{
    
public static void writeArray(String filename, int[] array) throws IOException
{
    //Open the file.

    DataOutputStream outputFile = new DataOutputStream(new FileOutputStream("MyNumbers.txt"));
    
    //Write the array.
    for(int index = 0; index < array.length; index++)
    {
        outputFile.writeInt(array[index]);
    }
    
    //Close the file.
    outputFile.close();
}

public static void readArray(String filename, int[] array) throws IOException
{
    int number;
    boolean endOfFile = false;
    
    //Open the file.
    FileInputStream fstream = new FileInputStream("MyNumbers.txt");
    DataInputStream inputFile = new DataInputStream(fstream);
    
    //Read values from the array.
    while (!endOfFile)
    {
        try
        {
            number = inputFile.readInt();
        }
        catch (EOFException e)
        {
            endOfFile = true;
        }
    }
    
    //Close the file.
    inputFile.close();
}
}

第二类:

import java.io.*;

public class FileArrayDemo extends FileArray

{

    public static void main(String[] args)

    {
        //Create arrays.
        int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8};
        int[] test = new int[8];
        
        //Try/catch clause.
        try
        {
            //Write the contents of the numbers array to the file MyNumbers.txt.
            FileArray fileArray = new FileArray();
            fileArray.writeArray("MyNumbers.txt", numbers);
            
            //Read the contents of the file MyNumbers.txt into the test array.
            fileArray.readArray("MyNumbers.txt", test);
            
            //Display the numbers from the test array.
            System.out.println("The numbers read from the file are:");
            for (int i = 0; i < test.length; i++)
            System.out.print(test[i] + " ");
        }
        catch (IOException e)
        {
            System.out.println("Error = " + e.getMessage());
        }
    }
}

当我尝试使用演示文件时,我的数组显示的是所有的0,而不是数字1-8。我不确定我在这里做错了什么。我一直在跟随我书中的例子,但是它们只在一个类中提供演示,而不是有一个类来创建执行写/读操作的方法。

共有1个答案

柯河
2023-03-14

您只需要修改传入参数的数组,您的readArray函数只是读取,不修改数组。

尝试通过以下方式放置readArray函数:

    public static void readArray(String filename, int[] array) throws IOException{
        int number;
        boolean endOfFile = false;

        //Open the file.
        FileInputStream fstream = new FileInputStream("MyNumbers.txt");
        DataInputStream inputFile = new DataInputStream(fstream);

        //Read values from the array.
        int i = 0;
        while (!endOfFile){
            try{
                number = inputFile.readInt();
                array[i] = number;
                i++;
                
            }catch (EOFException e)
            {
                endOfFile = true;
            }
        }

        //Close the file.
        inputFile.close();
    }

结果:

The numbers read from the file are:
1 2 3 4 5 6 7 8 
 类似资料:
  • 问题内容: 我正在尝试从URLConnection读取二进制文件。当我使用文本文件对其进行测试时,它似乎可以正常工作,但对于二进制文件则不能。发送文件时,我在服务器上使用以下mime类型: 但是到目前为止,似乎没有任何效果。这是我用来接收文件的代码: 问题答案: 我就是这样

  • 所以。。。我需要从.pkl文件中读取并导入图像数据集。图像存储为“二进制blob”。一旦完成了,我需要将它们转换成字节格式,这样我就可以通过Google的CloudVision运行它们。我设法在Linux虚拟机上打开了该文件(花了几天时间试图让它在Windows上工作…)。但现在我似乎无法将这个“二进制斑点”转换为我可以使用的实际图像。。。 下面是一个“二进制blob”: \1\x0 0 0 0\

  • 问题内容: 我正在尝试在Python中读取BMP文件。我知道前两个字节表示BMP公司。接下来的4个字节是文件大小。当我执行时: 我得到: ValueError:以10为底的int()的无效文字:’F#\ x13’ 我想做的是将这四个字节读取为整数,但是Python似乎将它们读取为字符并返回一个字符串,该字符串无法转换为整数。如何正确执行此操作? 问题答案: 该方法将字节序列作为字符串返回。要将字符

  • 问题内容: 我有一个较长的无符号整数文件(每个64位,0.47GB文件),需要读取并存储在数组中。经过一番思考之后,由于Java中的所有内容都已签名(请纠正我,请纠正我),因此我长时间使用了该类型,我想不出更好的选择了。无论如何,仅需对数组进行排序,因此原始数字的精确值并不是最重要的。我们应该测量排序算法的效率,仅此而已。但是,当我实际要读取文件时(在下面的代码中),我遇到了砖墙。 它会一直持续下

  • 问题内容: 我发现用Python读取二进制文件特别困难。你能帮我个忙吗?我需要读取此文件,在Fortran 90中,该文件很容易被读取 详细而言,文件格式为: 如何使用Python阅读?我尝试了一切,但没有成功。我是否有可能在python中使用f90程序,读取此二进制文件,然后保存需要使用的数据? 问题答案: 读取二进制文件内容,如下所示: 然后使用struct.unpack “解压缩”二进制数据

  • 问题内容: 我似乎无法找出一种将SQL Server中的二进制数据读取到PHP中的方法。我正在一个项目中,我需要能够将图像直接存储在SQL表中,而不是文件系统中。 目前,我一直在使用这样的查询: 插入到myTable(Document)中SELECT * FROM OPENROWSET(BULK N’C:\ image.jpg’,SINGLE_BLOB)as BLAH 实际将图像插入表中的效果很好