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流,其他模塊只是通過字符串相應的操作,來實現相應業務(除退出模塊)。

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