完成简易记事本工具
- 程序启动后,将用户在控制台上输入的每一行字符串都写入到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();
}
}