简易记事本工具 ------(与其中的一些编程细节)

完成简易记事本工具

  • 程序启动后,将用户在控制台上输入的每一行字符串都写入到note.txt文件中
    • 注:写入文件中的内容不用考虑换行
    • 当用户在控制台上单独输入:“exit”时程序退出

其中的一些细节

  • while(true) {...}-----------------------------------------------------死循环,true来开始while循坏

  • String line = scanner.nextLine();-----------------------------------------推荐使用.nextLine()

  • if ("exit".equals(line)){---------- 一般情况下都用'字符串的字面量'去比较'字符串的变量'

  • }else{
        byte[] data = line.getBytes(StandardCharsets.UTF_8);----------------------------------

    --------------------------放在这里是为了不会浪费资源,如果放在外面,
                                   我们写了exit退出,那就会白转,所有放在确定一定要输出的地方

  •     fos.write(data);
        //continue;//进入下一次循环------------------------进入下次循环,这是没有意义的一句
    }

package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/**
 * 完成简易记事本工具
 * 程序启动后,将用户在控制台上输入的每一行字符串都写入到note.txt文件中
 * 注:写入文件中的内容不用考虑换行
 * 当用户在控制台上单独输入:“exit”时程序退出
 */
public class Test2 {
    public static void main(String[] args) throws IOException {
/**
 *      文件流默认创建形式为 覆盖写模式 , 对应的构造器:
 *      FileOutputStream(String filename)
 *      FileOutputStream(File file)
 *      所谓覆盖写模式:
 *          如果创建流时指定的文件已经存在了,那么文件流会将该文件数据全部清除!
 *          然后将通过这个流写出的数据保存在文件中。
 *
 *      文件流可以已追加模式创建,对应的构造器
 *      FileOutputStream(String filename , boolean append)      append 追加
 *      FileOutputStream(File file , boolean append)
 *      如果第二个参数传入true,则文件流创建时为追加模式:
 *      如果此时指定的文件已经存在 则文件流在创建时 会将文件数据全部保留!
 *      通过当前流写出得数据会陆续的追加到文件中。
 */

        Scanner scanner = new Scanner(System.in);
        System.out.println("请开始输入内容,单独输入exit退出!");
        FileOutputStream fos = new FileOutputStream("note.txt",true);
        while(true) {                                               //细节:写一个死循环  true来开始while循坏
            String line = scanner.nextLine();//获取用户输入的一行字符串  //细节:推荐使用.nextLine()
            /*
                .next()和.nextLine() 区别:
                    next() :
                        1、只能读取有效字符,对有效字符出现之前的所有空格,next() 将自动忽略。
                        2、从有效字符出现开始,将其后输入的空格键、Tab键和Enter键等视为分隔符或结束符。

                    nextLine() :
                        1、读取Enter键出现之前的所有字符,包括带空格的字符。
                        2、只能以Enter键作为结束符。

             */
            if ("exit".equals(line)){//判断输入是否是’exit‘            //细节:从今往后,都要用'字符串的字面量'去比较'字符串的变量'
                break;//跳出循环      //判断字符串就用equals
            }else{
                byte[] data = line.getBytes(StandardCharsets.UTF_8);//细节:放在这里是为了不会浪费资源,如果放在外面,我们写了exit退出,那就会白转,所有放在确定一定要输出的地方
                fos.write(data);
                //continue;//进入下一次循环                            //细节:进入下次循环,这是没有意义的一句
            }
        }
        fos.close();
        System.out.println("今天又是元气满满的一天呢~");
    }
}

优秀代码,干净简洁

package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) throws IOException {
//优秀代码,干净简洁
        Scanner scanner = new Scanner(System.in);
        System.out.println("请开始输入内容,单独输入exit退出!");
        FileOutputStream fos = new FileOutputStream("note.txt",true);
        String str;
        while(!"exit".equals(str=scanner.nextLine())) {
           fos.write(str.getBytes(StandardCharsets.UTF_8));
           System.out.println("然后呢");
        }
        fos.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Speechless_小赵啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值