用JAVA实现:1.使用RandomAccessFile 流将一个文本文件倒置读出,每个文本文件的内容的最后一行都要加上自己的学号和姓名; 2.使用Java的输入输出流将一个文本文件的内容按行读出,没读出一行就顺序添加行号,并写入另一个文件中。 3.参考书中的例子16,解析一个文件中的价格数据,并计算平均价格。文件内容参考如下: 商品与价格列表: 电视机 ,2567元/台 空气净化器 , 3562元/台 PS, 6573元/台 吸尘器 ,3342元/台 要求:以上内容代码要加注释
时间: 2023-06-27 11:07:43 浏览: 147
1. 使用RandomAccessFile倒置文本文件并添加学号姓名
```java
import java.io.*;
public class ReverseFile {
public static void main(String[] args) {
String fileName = "test.txt"; // 文本文件名
String reverseFileName = "reverse_test.txt"; // 倒置后的文件名
String studentInfo = "学号:123456,姓名:小明\n"; // 添加的学号姓名信息
try {
RandomAccessFile file = new RandomAccessFile(fileName, "r"); // 以只读方式打开文件
RandomAccessFile reverseFile = new RandomAccessFile(reverseFileName, "rw"); // 以读写方式打开文件
long fileLength = file.length(); // 获取文件长度
long pointer = fileLength - 1; // 设置指针初始位置
String line = "";
while (pointer >= 0) { // 从文件末尾开始读取每一行
file.seek(pointer); // 设置指针位置
char c = (char) file.readByte(); // 读取一个字节
if (c == '\n') { // 如果是换行符,说明读取到了一行
reverseFile.writeBytes(line + "\n"); // 写入倒置后的文件
line = ""; // 清空行字符串
} else {
line = c + line; // 将字符加入行字符串的开头,实现倒置
}
pointer--; // 指针位置前移
}
// 如果最后一行没有换行符,需要单独将其写入倒置后的文件
if (!line.equals("")) {
reverseFile.writeBytes(line + "\n");
}
// 添加学号姓名信息
reverseFile.writeBytes(studentInfo);
file.close(); // 关闭文件
reverseFile.close();
System.out.println("倒置成功!");
} catch (IOException e) {
System.out.println("倒置失败:" + e.getMessage());
}
}
}
```
2. 使用输入输出流添加行号并写入另一个文件
```java
import java.io.*;
public class AddLineNumber {
public static void main(String[] args) {
String fileName = "test.txt"; // 文本文件名
String newFileName = "new_test.txt"; // 添加行号后的文件名
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName)); // 读取文本文件
BufferedWriter writer = new BufferedWriter(new FileWriter(newFileName)); // 写入新文件
String line;
int lineNumber = 1;
while ((line = reader.readLine()) != null) { // 按行读取文本文件
writer.write(lineNumber + " " + line + "\n"); // 写入新文件
lineNumber++; // 行号加1
}
reader.close(); // 关闭输入流
writer.close(); // 关闭输出流
System.out.println("添加行号成功!");
} catch (IOException e) {
System.out.println("添加行号失败:" + e.getMessage());
}
}
}
```
3. 解析文件中的价格数据并计算平均价格
```java
import java.io.*;
public class ParsePrice {
public static void main(String[] args) {
String fileName = "prices.txt"; // 文本文件名
double sum = 0; // 总价格
int count = 0; // 商品数量
try {
BufferedReader reader = new BufferedReader(new FileReader(fileName)); // 读取文本文件
String line;
while ((line = reader.readLine()) != null) { // 按行读取文本文件
String[] parts = line.split(","); // 将每一行按“,”分割成两部分
String priceString = parts[1].substring(0, parts[1].indexOf("元")); // 获取价格字符串
double price = Double.parseDouble(priceString); // 将价格字符串转换为double类型
sum += price; // 累加价格
count++; // 商品数量加1
}
reader.close(); // 关闭输入流
double average = sum / count; // 计算平均价格
System.out.println("共有" + count + "个商品,总价格为:" + sum + "元,平均价格为:" + average + "元。");
} catch (IOException e) {
System.out.println("解析价格数据失败:" + e.getMessage());
}
}
}
```
阅读全文