信析团队任务(文件操作)遇到的问题与总结

任务要求

在这里插入图片描述

程序代码

FileOperation类:

package 信析任务;

import java.io.*;

public class FileOperation {

    //建立File文件
    File file = new File("src/user.db.txt");;


    //建立写入文件的方法
    public boolean writeMsg(String msg) throws IOException{

        //运用字符缓冲流
        BufferedWriter bw = new BufferedWriter(new FileWriter(file,true)) ;
        //加上\n是为了每次打入的字符串换行
        bw.write(msg);
        //释放资源
        bw.close();
        //返回一个true以确定方法运行的结果
        return true;
    }

    //建立读取文件的方法
    public void readMsg()throws IOException{

        //运用字符流读取数据
        Reader reader = new FileReader(file);
        //建立字符串函数path来存放file的绝对路径
        String path = file.getAbsolutePath();
        //创建一个char数组来存放输入的字符串
        char[] chs = new char[100];
        //读取文件到chs数组中
        int info = reader.read(chs);
        System.out.println("文件的地址为:" + path);
        System.out.println("文件的内容为:");
        //输出chs内的字符串
        System.out.println(chs);
        //释放资源
        reader.close();
    }


    //建立删除文件的方法
    public boolean deletefile() throws IOException{

        //返回一个true则说明文件删除成功,返回一个false则说明文件删除失败
        return file.delete();
    }

}

Test类:

package 信析任务;

import java.io.IOException;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException {
        //Scanner类的声明
        Scanner sc = new Scanner(System.in);
        //构造FileOperation类
        FileOperation file = new FileOperation();
        //死循环是为了程序可重新运行
        for ( ; ; ) {

            //程序的说明
            System.out.println("请输入你需要的功能:");
            System.out.println("0:结束当前程序");
            System.out.println("1:打印字符串到指定的文件中");
            System.out.println("2:打印指定文件的地址以及其中含有的字符串");
            System.out.println("3:删除指定文件");


            //这里的if是为了防止打错成非整数的情况,若输入了其他类型的数则会结束程序
            if (sc.hasNextInt()) {

                int choose = sc.nextInt();

                //运用switch函数来运行不同的类
                switch (choose) {

                    //运行结束
                    case 0: {
                        System.exit(0);
                    }

                    //运行写入类
                    case 1: {
                        //建立字符串函数msg,赋给他空的值以便下面的运算
                        String msg = "";
                        System.out.println("请输入你想打印的字符串");
                        //运用do..while()来使程序运行到"end"字符串后结束
                        do {
                            msg += sc.nextLine();
                            msg += "\n";
                        } while (!(msg.endsWith("end\n")));
                        //len-3是为了使减去输入末尾的“end”
                        int len = msg.length();
                        msg = msg.substring(0,len-4);
                        //运行FileOperation类的写入方法
                        if(file.writeMsg(msg)){
                            System.out.println("信息写入成功,目前文件包含如下内容:");
                            file.readMsg();
                        }else{
                            System.out.println("文件写入失败");
                        }
                        break;
                    }

                    //运行读取类
                    case 2: {
                        file.readMsg();
                        break;
                    }

                    //运行删除类
                    case 3:{
                        if(file.deletefile()) {
                            System.out.println("文件删除成功");
                        }else {
                            System.out.println("文件删除失败");
                        }
                        break;
                    }

                }

            }else break;

        }

    }

}

运行结果:

请输入你需要的功能:
0:结束当前程序
1:打印字符串到指定的文件中
2:打印指定文件的地址以及其中含有的字符串
3:删除指定文件
1
请输入你想打印的字符串
我是PAGend
信息写入成功,目前文件包含如下内容:
文件的地址为:C:\Users\PAG\IdeaProjects\1\src\user.db.txt
文件的内容为:

我是PAG                                                                                              
请输入你需要的功能:
0:结束当前程序
1:打印字符串到指定的文件中
2:打印指定文件的地址以及其中含有的字符串
3:删除指定文件
2
文件的地址为:C:\Users\PAG\IdeaProjects\1\src\user.db.txt
文件的内容为:

我是PAG                                                                                              
请输入你需要的功能:
0:结束当前程序
1:打印字符串到指定的文件中
2:打印指定文件的地址以及其中含有的字符串
3:删除指定文件
3
文件删除成功
请输入你需要的功能:
0:结束当前程序
1:打印字符串到指定的文件中
2:打印指定文件的地址以及其中含有的字符串
3:删除指定文件
0

Process finished with exit code 0

遇到的问题

因为我是把Java基本学完了再去完成任务的,所以这次任务并没有给我太多困难,我用了差不多一下午就完成了,但在完成程序的过程中还是遇到了几个棘手的问题,就在这里整理总结一下,以提升自己的编程水平,防止下次问题的出现。

FileOperation类遇到的问题

因为我已经学到IO流了,所以基本的方法编写是没什么问题的,但在writeMsg(String msg)readMsg() 方法上还是遇到了麻烦。

  1. 在建立字符流输入数据时,我选择了Write write = new write(); 这导致了有段时间我没法正常的输入数据,而且程序也在报错,说明我对IO流的输入这块还不够熟练

  2. readMsg() 方法中,我在想如何把文档中的字符串输出到控制台上时,选择新建一个char[ ] chs函数来装字符串,但在输出时我犯了个错误,导致了程序的报错,就是把文字说明和chs一起输出,这导致了程序的报错,在我发现错误后,把他们分成两句后程序就正常了。

Test类遇到的问题

Tset类是我一步步想到的,但其中最费脑细胞的问题就是引用writeMsg(String msg) 那条语句,我主要在困惑如何实现任务中说的“在输入end后结束输入”,不过后来我在试了很多条程序后终于想到了do…while(),于是任务的问题就解决了。
但这时又有新问题出现了——输入的字要换行的话要怎么操作呢,我又试了很多方法,最终还是没有想到,于是我决定去咨询学长,学长看完我的程序后很快指出了问题,在又几次的尝试后,我终于解决了自己的问题,Test类也成功编写完成。

我的感受

经过这次信析团队的任务,我发现自己的编程水平还需要提高,在编程的速度以及完成度上还有很大的提升空间。这次任务给让我看到了自己过去学习Java知识的一些漏洞,提醒了我要经常回去复习才能继续提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FFFPAG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值