200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 日记本编辑器(控制台程序)

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

时间:2023-12-02 10:03:19

相关推荐

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

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

预期功能

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

废话不多说,先贴代码

Diary.java

//日记本程序//已知问题:使用VScode在记事本中无法写入中文//问题已解决.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已经被删除,至此程序测试完毕。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。