建立一个书籍信息的文本文件,其中包括编号、书籍名称、版本、价格、销售额字段及5本书籍的记录。编写程序读入书籍信息文件并将第3本、第4本书籍价格分别增加20和30,再将修改后的书籍信息文件输出到另一个文本文件中(文件名称为pbookinfonew.txt)。
文本文件pbookinfo.txt内容如下:
编号 名称 版本 价格 销售额
1001 Java程序设计 第2版 56.9 560
1002 Java开发实战 第1版 98.9 820
1003 C++程序设计指南 第3版 62.5 362
1004 EJB3.0入门经典 第1版 59.8 1280
1005 Spring3.0 in Action 第3版 95.8 1189
程序结构图:
代码如下:
package test1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class editBookinfo {
public static void main(String[] args) {
//创建file对象
File file = new File("pbookinfo.txt");
if(file.exists()) { // 判断文件或文件夹是否存在
System.out.println(file.getName() + " 已经存在");
System.out.println(" ");
System.out.println("进行"+file.getName() + " 文件读取操作");
readTxt(file);
} else {
try {
file.createNewFile(); // 创建文件或者文件夹
System.out.println(file.getName() + " 创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void readTxt(File file){
// StringBuilder result = new StringBuilder();
try{
BufferedReader br = new BufferedReader(new FileReader(file));
//构造一个BufferedReader类来读取文件
String s = null;
s = br.readLine();
File writename = new File("pbookinfonew.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
writename.createNewFile(); // 创建新文件
BufferedWriter out = new BufferedWriter(new FileWriter(writename));
out.write(s+"\r\n");
int n=1;
System.out.println(" ");
while((s = br.readLine())!=null){
//使用readLine方法,读取信息
//通过spilit函数对读取的内容进行控制
String[] data = s.split(" ");
//进行数据信息修改
if(n==3){
System.out.print("修改前:第"+n+"行的价格信息 "+data[3]+"\r");
System.out.println();
float price = Float.parseFloat(data[3]);
price=price+20;
data[3] = String.valueOf(price);
System.out.println("第"+n+"行 价格信息已经修改成功,修改成功后的信息如下:");
System.out.println("修改后:第"+n+"行的价格信息 "+data[3]+"\r");
}else if(n==4){
System.out.print("修改前:第"+n+"行的价格信息 "+data[3]+"\r");
System.out.println();
float price1 = Float.parseFloat(data[3]);
//将数据转换为float格式,进行数学上的加减运算
price1=price1+30;
data[3] = String.valueOf(price1);
//String.valueOf(i)
//String 类中封装的方法,作用就是将括号里面这个 i 的值转换成一个 String 类型的值
System.out.println("第"+n+"行 价格信息已经修改成功,修改成功后的信息如下:");
System.out.println("修改后:第"+n+"行的价格信息 "+data[3]+"\r");
}
out.write(data[0]+" "+data[1]+" "+data[2]+" "+data[3]+" "+data[4]+"\r\n");
n++;
}
out.flush(); // 把缓存区内容压入文件
out.close(); // 最后记得关闭文件
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
程序进行Run AS启动后,刷新项目,会产生一个pbookinfonew.txt文件
pbookinfonew.txt文件内容如下:
编号 名称 版本 价格 销售额
1001 Java程序设计 第2版 56.9 560
1002 Java开发实战 第1版 98.9 820
1003 C++程序设计指南 第3版 82.5 362
1004 EJB3.0入门经典 第1版 89.8 1280
1005 Spring3.0 in Action 第3版 95.8 1189