日记本编辑器(控制台程序)

预期功能

  • 日记本文件(.txt)的创建
  • 目录文件的列出显示
  • 日记本文件的选择打开
  • 日记本文件的编辑(添加新日记)和保存
  • 日记本内容的显示
  • 日记本文件的删除

废话不多说,先贴代码

Diary.java

//日记本程序
//已知问题:使用VScode在记事本中无法写入中文
//问题已解决2021.05.04package h428_2;//这里改为你自己的包
import java.io.*;
import java.util.Scanner;public class Diary {public static void main(String[] args)throws IOException {//参数定义Scanner keybord=new Scanner(System.in);//方便输入int型数据File f=null;//文件BufferedWriter input=null;//输入流int order;//指令选择String filename=null;//文件名String path="F://NEKO/Code/VS Code/Java/Homework/h428_2/File";//日记本保存目录File dir=new File(path);//目标目录FileAccept fa=new FileAccept();fa.setExtendName("txt");//目标扩展名String choose;//打开和删除文件的选择文件名//执行体while(true){System.out.print("\n请输入指令:\n"+"1:创建记事本;2:打开日记本;3:编辑日记本;4:保存日记本;5:关闭日记本;6:删除日记本\n"+"(输入0退出程序)  _>");order=keybord.nextInt();if(order==0)break;//输入0跳出循环(退出程序)if(order==1){//创建System.out.print("请输入文件名>");filename=null;filename=keybord.next();f=new File(path,filename);if(!f.exists()){f.createNewFile();System.out.println("日记本 "+filename+" 创建成功");}else System.out.println("同名文件已存在");}if(order==2){//打开//给出当前文件列表String s[]=dir.list(fa);System.out.println("当前文件目录:");if(s.length==0)System.out.println("(空目录)");else{for(String name:s){System.out.println(name);}//询问打开文件System.out.print("需要打开的日记本为>");choose=keybord.next();f=new File(path,choose);if(!f.exists()){System.out.println("日记本不存在,重新输入");input=null;}else{OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(f,true),"UTF-8");//设置新内容追加或覆盖true为追加,设置格式input=new BufferedWriter(osw);//BufferedWriter input=new BufferedWriter(new FileWriter(f,true));if(input!=null)System.out.println("日记本已打开");}}}if(order==3){//修改//如果日记本未打开给出提示if(input==null){System.out.println("日记本未打开,请先打开日记本");}else{//读取当前日记本内容System.out.println("当前日记本内容为:");InputStreamReader isr = new InputStreamReader(new FileInputStream(f),"UTF-8");//设置文件读取格式BufferedReader output=new BufferedReader(isr);//BufferedReader output=new BufferedReader(new FileReader(f));String s=null;if(f.length()==0) System.out.println("(空文件)");while((s=output.readLine())!=null){System.out.println(s);}output.close();System.out.println("\n请输入内容(输入\"//\"结束)>");while(true){String in=keybord.nextLine();if("//".equals(in)) break;input.write(in);input.newLine();//input.flush();//这里把刷新保存做到了功能四里,所以注释掉了}System.out.println("写入完毕");}}if(order==4){//保存if(input==null) System.out.println("日记本未打开,请先打开日记本");else{input.flush();System.out.println("日记本已保存");}}if(order==5){//关闭if(input==null) System.out.println("日记本未打开,请先打开日记本");else{input.close();input=null;System.out.println("日记本已关闭");}}if(order==6){//删除String s[]=dir.list(fa);System.out.println("当前文件目录:");if(s.length==0)System.out.println("(空目录)");else{for(String name:s){System.out.println(name);}}//询问删除文件System.out.print("需要删除的日记本为>");filename=null;choose=keybord.next();f=new File(path,choose);if(!f.exists())System.out.println("日记本不存在,重新输入");else{if(input!=null) input.close();//需要先关闭再删除,不然会因为占用而删除失败f.delete();f=null;System.out.println("日记本已删除");}}//else{//    System.out.println("指令不存在,重新输入");//}}keybord.close();}
}

FileAccept.java

package h428_2;//这里改为你自己的包
import java.io.*;public class FileAccept implements FilenameFilter{private String extendName;public void setExtendName(String s){extendName="."+s;}public boolean accept(File dir,String name){return name.endsWith(extendName);}
}

注意事项

  • 每次写完新内容都需要手动保存,即运行完指令3后需要运行指令4才会把内容写入日记本,这样做的目的仅仅是完成要求的保存功能,如想在编辑后自动保存就把代码中下列语句的注释去掉

//input.flush();//这里把刷新保存做到了功能四里,所以注释掉了

  • 使用时将Diary.java代码中参数定义的下列语句修改,将目录改为你想要保存日记本文件的目录(目录必须存在,本程序不自动创建目录)

String path=“F://NEKO/Code/VS Code/Java/Homework/h428_2/File”;//日记本保存目录

下面是运行截图

执行到这一步,我们来看一下日记本的内容
可以发现第二次输入的内容 【第二次输入】并没有被写入,这是因为第二次输入完成后没有执行指令4,所以本次输入内容未保存到日记本中,下图为重新执行指令4之后的日记本内容和文件夹内的文件。

接下来我们继续执行其他指令
可以看到我们关闭日记本后是无法执行编辑和保存操作的,当然再次关闭也不行,程序都会给出提示【还未打开日记本】。接下来执行指令6来删除日记本。

可以看到文件04.txt已经被删除,至此程序测试完毕。

日记本编辑器(控制台程序)相关推荐

  1. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮、代码补全等...

    Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等-- 语法高亮.代码提示补全. ...

  2. Lua sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux

    sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux [  编程开发,  编辑输入 -  Windows,  Mac,  Linux // 20 ...

  3. VC++ 隐藏控制台程序窗口

    转自:http://hi.baidu.com/sicceer/blog/item/d9c35a810d15c4c8bc3e1ec8.html 设置 #pragma comment( linker, & ...

  4. 在vc6控制台程序中如何调用运行ImageMagick命令行工具

    在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...

  5. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  6. 使用VSCode调试C#控制台程序

    转载自: http://www.cnblogs.com/lxhbky/p/6673230.html http://www.cnblogs.com/lxhbky/p/6692065.html 一.环境安 ...

  7. VS C/C++控制台程序添加内存泄漏自动检测功能

    基于MFC框架的应用程序由模板生成时,已经自动添加了内存泄漏自动检测功能,当你的程序有内存泄漏,在Debug调式模式下运行就会在vc的输出窗口里显示出来,容易发现并及时解决.但是我们在写一些测试程序时 ...

  8. Mysql:mysql 控制台程序的提示符 prompt 字符串设置

    The prompt command reconfigures the default mysql> prompt. The string for defining the prompt can ...

  9. 把控制台程序嵌入到 WinForm 中执行

    我们经常有一些用控制台实现的简单应用,这种应用一般都是一步一步"向导"式执行,在每一步上收集用户的输入,最后得到程序执行的结果.但有些用户可能不喜欢用键盘操作的命令行界面,还是愿意 ...

最新文章

  1. 矩陣 线性递归 斐波那契實現
  2. 《深入理解Java虚拟机》笔记3——7种垃圾收集器
  3. android studio tree,Git 、Sourse Tree 和 Android Studio配置遇到的问题
  4. C语言20790内所有因子的和,长春市水污染控制指标的因子和聚类分析.pdf
  5. 2.用Python套用Excel模板,一键完成原亮样式
  6. 蓝桥杯基础练习字母图形
  7. win10 Docker Toolbox 默认路径不能写问题
  8. html读mysql数据_html从数据库中读取数据
  9. Java之函数式接口
  10. viewstub学习笔记
  11. 内连接、外连接和全连接的区别
  12. google sdk speech-to-text(谷歌语音转文本、谷歌语音转字幕)
  13. 【思前享后】区块链架构与特点
  14. js验证营业执照号码是否合规
  15. 【爬虫实战】Python 自制天气预报程序!爬取全国天气网
  16. 莫队和带修莫队 学习笔记
  17. 长安逸动系统升级服务器连接失败,15逸动系统救砖、升级教程
  18. 使用keytool和openssl生成RSA公钥私钥和证书,
  19. 苹果震撼发布首款头显,搭配强悍Mac和iOS 17等全新产品,价值25000元!
  20. Swoft中使用Consul微服务

热门文章

  1. 照明灯具哪个品牌好?家庭护眼灯推荐
  2. 设置横坐标刻度_Excel图表坐标轴设置有技巧,能解决多数人会遇到的2个棘手问题...
  3. 【轴承故障分解】基于matlab ITD轴承故障信号分解【含Matlab源码 1871期】
  4. 局域网语音对讲系统_智慧医疗信息化系统建设(七):医院专业智能化
  5. 半导体物理载流子浓度计算思考(统计物理的重要应用)
  6. 基于DQN实现立杆子游戏
  7. Pole Arrangement UVA - 1638 杆子的排列
  8. 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)...
  9. 乐和一下,生活在浮云,也太快乐!
  10. HTML标签之table