gpt4 book ai didi

java - 使用 java 的随机访问文件

转载 作者:行者123 更新时间:2023-12-02 02:59:01 26 4
gpt4 key购买 nike

我正在尝试从文本文件中读取整数。该文件包含以下文本:

3 1.9 a2 8 9
1 3 5.6 xx 7
7.2 abs 7 :+ -4
5
ds ds ds

我正在将 randomAccessFile 与 java 一起使用。当我尝试读取第一个 int 时,我得到 857747758 (我写了 int number1 = inputStream.nextInt();,其他人也喜欢它用于 txt 文件中的其他 int。)它告诉我长度是 59。我只是想知道为什么它给我这么大的数字,而不只是 3?另外,读取 int 3 后我会将文件指针移动到哪里?我知道它从位置 0 开始,但我只需要帮助弄清楚文件点如何移动。空的地方算不算?我知道它将它们转换为二进制。

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;


public class Program5 {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
RandomAccessFile inputStream = null;
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
int sum = 0;

System.out.println("Please enter the file name you wish to read from.");
String file_name = keyboard.next();

try {
inputStream = new RandomAccessFile(file_name, "r");

n1 = inputStream.readInt();
// inputStream.seek(3);
// n2 = inputStream.readInt();
// n3 = inputStream.readInt();
// n4 = inputStream.readInt();
// n5 = inputStream.readInt();
// n6 = inputStream.readInt();
// n7 = inputStream.readInt();
// n8 = inputStream.readInt();
// n9 = inputStream.readInt();
System.out.println(inputStream.length());
System.out.println(inputStream.getFilePointer());
System.out.println(n1);
// System.out.println(n2);
sum = n1; // n2; /* n3 + n4 + n5 + n6 + n7 + n8 + n9; */
inputStream.close();
} catch (FileNotFoundException e) {
System.out.println("Problem opening up file" + file_name);
System.exit(0);
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("The sum of the numbers is: " + sum);

System.out.println("End of program.");

}
}

得到这个

 Please enter the file name you wish to read from.
inputP5.txt
length at 59
file pointer at 4
n1 =857747758
The sum of the numbers is: 857747758
End of program.

最佳答案

I am trying to read ints from a text file.

那么您不应该使用二进制 API。

I'm using the RandomAccessFile with Java. When I try to read the first int I get 857747758 (I wrote int number1 = inputStream.nextInt()

不,你没有。您使用了 inputStream.readInt()。这是一个二进制 API。 readInt() 按照网络字节顺序读取 4 字节二进制整数,就像 Javadoc 中所述。

您应该使用Scanner.nextInt()

关于java - 使用 java 的随机访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com