I/O 输入输出流

建立一个书籍信息的文本文件,其中包括编号、书籍名称、版本、价格、销售额字段及5本书籍的记录。编写程序读入书籍信息文件并将第3本、第4本书籍价格分别增加20和30,再将修改后的书籍信息文件输出到另一个文本文件中(文件名称为pbookinfonew.txt)。

文本文件pbookinfo.txt内容如下:

编号  名称  版本  价格  销售额
1001    Java程序设计    第256.9    560
1002    Java开发实战    第198.9    820
1003    C++程序设计指南   第362.5    362
1004    EJB3.0入门经典  第159.8    1280
1005    Spring3.0 in Action 第395.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程序设计    第256.9    560
1002    Java开发实战    第198.9    820
1003    C++程序设计指南   第382.5    362
1004    EJB3.0入门经典  第189.8    1280
1005    Spring3.0 in Action 第395.8    1189
可以很明显的看出第3本、第4本书籍价格进行了修改
pbookinfonew.txt文件会产生在项目的根目录下

运行后的目录结构

在控制台输入的内容信息如下:

Console控制台信息

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值