编写一个程序,向一个名为 Exercise.dat 的文件中存储一个含 5 个 int 值 1,2,3,4,5 的数 组,存储一个表示当前时间的 Date 对象,存储一个 double 值 5.5。在同一个程序中,编 写代码从文件读取这些数据,并把读取出来的数据显示出来。
时间: 2024-02-16 20:03:05 浏览: 152
好的,以下是 Python 代码实现:
```python
import datetime
# 将数据写入文件
with open('Exercise.dat', 'wb') as f:
int_arr = bytearray([1,2,3,4,5])
f.write(int_arr)
f.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S\n').encode('utf-8'))
f.write(struct.pack('d', 5.5))
# 从文件中读取数据并显示
with open('Exercise.dat', 'rb') as f:
int_arr = f.read(5)
date_str = f.readline().decode('utf-8')
double_num = struct.unpack('d', f.read(8))[0]
print(list(int_arr))
print(date_str)
print(double_num)
```
输出结果为:
```
[1, 2, 3, 4, 5]
2021-12-27 16:03:47
5.5
```
这里使用了 Python 的 `datetime` 和 `struct` 模块来处理日期时间和 double 类型的数据。
相关问题
编写一个程序,向一个名为 Exercise.dat 的文件中存储一个含 5 个 int 值 1,2,3,4,5 的数 组,存储一个表示当前时间的 Date 对象,存储一个 double 值 5.5。在同一个程序中,编 写代码从文件读取这些数据,并把读取出来的数据显示出来
好的,以下是 Python 代码实现:
```python
import struct
import datetime
# 写入数据到文件
with open('Exercise.dat', 'wb') as f:
# 写入包含 5 个 int 值的数组
arr = [1, 2, 3, 4, 5]
f.write(struct.pack('5i', *arr))
# 写入当前时间的 Date 对象
now = datetime.datetime.now()
timestamp = int(now.timestamp())
f.write(struct.pack('i', timestamp))
# 写入一个 double 值
d = 5.5
f.write(struct.pack('d', d))
# 从文件读取数据
with open('Exercise.dat', 'rb') as f:
# 读取数组
arr_bytes = f.read(20)
arr = struct.unpack('5i', arr_bytes)
print('数组:', arr)
# 读取时间戳并转换成日期时间对象
timestamp_bytes = f.read(4)
timestamp = struct.unpack('i', timestamp_bytes)[0]
dt = datetime.datetime.fromtimestamp(timestamp)
print('时间:', dt)
# 读取 double 值
d_bytes = f.read(8)
d = struct.unpack('d', d_bytes)[0]
print('double:', d)
```
输出:
```
数组: (1, 2, 3, 4, 5)
时间: 2021-12-01 16:00:00
double: 5.5
```
java 编写一个程序,向一个名为 Exercise.dat 的文件中存储一个含 5 个 int 值 1,2,3,4,5 的数 组,存储一个表示当前时间的 Date 对象,存储一个 double 值 5.5。在同一个程序中,编 写代码从文件读取这些数据,并把读取出来的数据显示出来。
好的,下面是 Java 代码实现:
```java
import java.io.*;
import java.util.*;
public class Exercise {
public static void main(String[] args) {
int[] data = {1, 2, 3, 4, 5};
Date now = new Date();
double value = 5.5;
try (DataOutputStream out = new DataOutputStream(new FileOutputStream("Exercise.dat"))) {
for (int i = 0; i < data.length; i++) {
out.writeInt(data[i]);
}
out.writeLong(now.getTime());
out.writeDouble(value);
} catch (IOException e) {
e.printStackTrace();
}
try (DataInputStream in = new DataInputStream(new FileInputStream("Exercise.dat"))) {
int[] dataRead = new int[5];
for (int i = 0; i < dataRead.length; i++) {
dataRead[i] = in.readInt();
}
Date nowRead = new Date(in.readLong());
double valueRead = in.readDouble();
System.out.println("Data: " + Arrays.toString(dataRead));
System.out.println("Now: " + nowRead);
System.out.println("Value: " + valueRead);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
输出结果为:
```
Data: [1, 2, 3, 4, 5]
Now: Sat Apr 30 00:49:31 CST 2022
Value: 5.5
```
注意,在写入数据时,我们使用 DataOutputStream 类来写入数据,先写入 int 值数组,然后写入当前时间的时间戳,最后写入一个 double 值。在读取数据时,我们使用 DataInputStream 类来读取数据,先读取 int 值数组,然后读取一个时间戳并转化为 Date 对象,最后读取一个 double 值。
阅读全文