java模拟记事本

一:程序框架图

在这里插入图片描述

二:代码详情

package notepad;
import java.awt.im.spi.InputMethod;
import java.io.FileNotFoundException;
import java.io.FilePermission;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
 * 模拟记事本
 */
public class Notepad {
	       //文件路径
	       private static String  fillPath;
	       //文件内容
	       private static String message="";
	       
	       public static void main(String[] args) throws IOException {
			   Scanner  scanner=new Scanner(System.in);
			   while(true){
				   System.out.println("--1:新建文件 2:文件打开 3:修改文件 4:保存 5:退出--");
				   System.out.println("请输入指令");
				   int command=scanner.nextInt();
				   switch (command) {
				case 1:
					//创建文件
					createFile();
					break;
				case 2:
					//打开文件
					openFile();
					break;
				case 3:
					//修改文件
					editFile();
					break;
				case 4:
					//保存文件
					saveFile();
					break;
				case 5:
					//退出
					exit();
					break;
				default:
					System.out.println("你输入的指令错误!");
					break;
				}
			   }
	       }
	   /*
	    * 退出文件
	    */
		private static void exit() {
			// TODO Auto-generated method stub
			System.out.println("你已经退出系统,谢谢使用!");
			System.exit(0);
		}
		/*
		 * 保存文件
		 */
		private static void saveFile() throws IOException {
			// TODO Auto-generated method stub
			Scanner  scanner=new Scanner(System.in);
			FileWriter  out=null;
			if (fillPath!=null) {
				out=new FileWriter(fillPath);
			}else{
				System.out.println("请输入文件保存的绝对路径:");
				String path=scanner.next();
				fillPath=path;
				if (!fillPath.toLowerCase().endsWith(".txt")) {
					fillPath+=".txt";
				}
				out=new FileWriter(fillPath);
			}
			out.write(message);
			out.close();
			message="";
			fillPath=null;
		}
		/*
		 * 修改文本内容
		 */
		private static void editFile() {
			// TODO Auto-generated method stub
			if (message.isEmpty()&&fillPath==null) {
				System.out.println("请先新建文件或者打开文件");
				return;
			}
			Scanner scanner=new Scanner(System.in);
			String str="请输入要修改的内容以(修改的目标文字:修改之后的文字)格式 ,停止修改请输入\\stop\\:";
			System.out.println(str);
			String intputMessage="";
			while(!intputMessage.equals("stop")){
				intputMessage=scanner.nextLine();
				if (intputMessage!=null&&intputMessage.length()>0) {
					String []editMessage=intputMessage.split(":");
					if (editMessage!=null&&editMessage.length>1) {
						message=message.replace(editMessage[0], editMessage[1]);
					}
					
				}
			}
			System.out.println("修改后的内容:"+"\r\n"+message);
		}
		/*
		 * 打开文件
		 */
		private static void openFile() throws IOException {
			// TODO Auto-generated method stub
			message="";
			Scanner scanner=new Scanner(System.in);
			System.out.println("请输入打开文件的位置:");
			fillPath=scanner.next();
			if (fillPath!=null&&!fillPath.endsWith(".txt")) {
				System.out.println("请选择文本文件");
				return;
			}
			FileReader in=new FileReader(fillPath);
			char[]charArray=new char[1024];
			int len=0;
			StringBuffer stringBuffer=new StringBuffer();
			while((len=in.read(charArray))!=-1){
				stringBuffer.append(charArray);
			}
			message=stringBuffer.toString();
			System.out.println("打开文件内容:"+"\r\n"+message);
			in.close();
		}
		/*
		 * 创建文件
		 */
		private static void createFile() {
			// TODO Auto-generated method stub
			message="";
			Scanner scanner=new Scanner(System.in);
			System.out.println("请输入内容,停止编写请输入\"stop\":");
			StringBuffer stringBuffer=new StringBuffer();
			String inputMessage="";
			//当输入stop时,停止输入
			while (!(inputMessage.equals("stop"))) {
				if (stringBuffer.length()>0) {
					//追加换行符
					stringBuffer.append("\r\n");
				}
				//拼接输入信息
				stringBuffer.append(inputMessage);
				//获取输入信息
				inputMessage=scanner.nextLine();
			}
			//将输入内容停止
			message=stringBuffer.toString();
		}

}

三:运行效果

在这里插入图片描述
在这里插入图片描述

四:总结

这节课是实战练习,对前面学习的FileWriter流和FileReader流进行练习,FileWriter和FileReader分别继承于Writer和Reader类
其实IO流的操作基本上形式一样
如流的读取
实例化读取对象----->通过reader()方法进行读取—>关闭对象,释放对象
如流的写入
实例化写入对象----->通过writer()方法进行写入---->关闭对象,释放对象
模拟记事本主要在保存文件(FileWriter)模块和打开文件模块(FileReader)使用到Io流,其他模块只是通过字符串相应的操作,来实现相应业务(除退出模块)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章