gpt4 book ai didi

java - 显示随机访问文件中的信息

转载 作者:行者123 更新时间:2023-12-01 14:49:31 24 4
gpt4 key购买 nike

我创建了一个应用程序,允许用户输入帐号、余额(不超过 99999)和姓氏。程序将获取此信息并将其插入到 .txt 文件中与帐号 (acct) 对应的位置。这是代码:

import java.io.*;

public class NationalBank {
public static void main(String[] args) throws Exception{
InputStreamReader temp = null;
BufferedReader input = null;
try {
temp = new InputStreamReader(System.in);
input = new BufferedReader(temp);

int acct;
double amount;
String name;
RandomAccessFile file = new RandomAccessFile("bank.txt", "rw");
while(true) {
// Asks for input
System.out.println("Enter Account Number (0-9999): ");
acct = Integer.parseInt(input.readLine());
System.out.println("Enter Last Name: ");
name = input.readLine();
System.out.println("Enter Balance ");
amount = Double.parseDouble(input.readLine());

// Making sure account numbers are between 0 and 9999
if(acct >=0 && acct <= 9999) {
file.seek(acct*17);
file.write(truncateName(name));
file.writeBytes(" " +amount);
}
else {
continue;
}
// Asks user if more entries are needed
System.out.println("Enter More? (y/n)");
if (input.readLine().toLowerCase().equals("n"))
break;
}
file.close();
}
catch (Exception e) {
}
}

// Truncate/adding spaces to name until 8 characters
public static byte[] truncateName (String name) {
byte[] result = new byte[8];
for (int i = 0; i < 8; i++)
result [i] = i < name.length () ? (byte)name.charAt (i) : (byte)' ';
return result;
}

}

现在,我正在尝试创建一个应用程序,该应用程序将写回所有包含其中信息的帐户(包含姓氏和余额)。我需要显示这些帐户的帐号、余额和姓氏。到目前为止,我已经:

import java.io.*;

public class DisplayBank {
public static void main(String[] args) throws IOException {
FileInputStream input = new FileInputStream ("bank.txt");
try {
byte[] record = new byte[17];
while (input.read(record) == 17) {
String name = new String(record, 0, 8);
long bits = 0;
for (int i = 8; i < 17; i++) {
bits <<= 8;
bits |= record[i] & 0xFF;
}
double amount = Double.longBitsToDouble(bits);

System.out.println("Account Number: " + record + " Name: " + name + ", amount: " + amount);
}
}

catch (IOException e) {
}
finally {
input.close();

}
}
}

目前仅正确显示名称。余额不正确,不知道如何获取账号。为了获取帐号,我需要获取name的位置。为了获得金额,我需要查找名称,偏移9个字节,然后读取接下来的8个字节...

最佳答案

如果您想解析包含与您提供的相似的姓氏和金额的文本文件:

提供示例

姓氏 93942.12

我会做的是尝试类似下面的事情

 public void read_file(){
try{

// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("C:\\Users\\Alos\\Desktop\\test.txt");
// Use DataInputStream to read binary NOT text.
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
int record = 0;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {

String[] splits = strLine.split("\t");
String LastName = splits[0];
String Amount = splits[1];
System.out.println("Account Number: " + record + " Name: " + LastName + ", amount: " + Amount);
record++;
}
//Close the input stream
in.close();

}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}

}

这可能不完全是您正在寻找的内容,但如果您想要不同的内容,请查看并更新您的问题。

关于java - 显示随机访问文件中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027943/

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