模拟笔记本

模拟笔记本

package Taskthree;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Notepad1 {
	private static String filePath;
	  private static String message = "";
	  public static void main(String[] args) throws Exception {
	    Scanner sc = new Scanner(System.in);
	    System.out.println("--1:新建文件 2:打开文件  3:修改文件  4:保存 5:退出--");
	    while (true) {
	      System.out.print("请输入操作指令:");
	      int command = sc.nextInt();
	      switch (command) {
	      case 1:
	        createFile();// 1:新建文件
	        break;
	      case 2:
	        openFile();// 2:打开文件
	        break;
	      case 3:
	        editFile();// 3:修改文件
	        break;
	      case 4:
	        saveFile();// 4:保存
	        break;
	      case 5:
	        exit();// 5:退出
	        break;
	      default:
	        System.out.println("您输入的指令错误!");
	        break;
	      }   
	    }
	  }
	    private static void createFile() {
	        message = "";// 新建文件时,暂存文件内容清空
	        Scanner sc = new Scanner(System.in);
	        System.out.println("请输入内容,停止编写请输入\"stop\":");// 提示
	        StringBuffer stb = new StringBuffer();// 用于后期输入内容的拼接
	        String inputMessage = "";
	        while (!inputMessage.equals("stop")) {// 当输入“stop”时,停止输入
	          if (stb.length() > 0) {
	            stb.append("\r\n");// 追加换行符
	          }
	          stb.append(inputMessage);// 拼接输入信息
	          inputMessage = sc.nextLine();// 获取输入信息
	        }
	        message = stb.toString();// 将输入内容暂存
	      }
	    private static void openFile() throws Exception {
	        message = "";// 打开文件时,将暂存内容清空
	        Scanner sc = new Scanner(System.in);
	        System.out.print("请输入打开文件的位置:");
	        filePath = sc.next();// 获取打开文件的路径
	        // 控制只能输入txt格式的文件路径
	        if (filePath != null && !filePath.endsWith(".txt")) {
	          System.out.print("请选择文本文件!");
	          return;
	        }
	        FileReader in = new FileReader(filePath);// 实例化一个FileReader对象
	        char[] charArray = new char[1024];// 缓冲数组
	        int len = 0;
	        StringBuffer sb = new StringBuffer();
	        // 循环读取,一次读取一个字符数组
	        while ((len = in.read(charArray)) != -1) {
	          sb.append(charArray);
	        }
	        message = sb.toString();// 将打开文件内容暂存
	        System.out.println("打开文件内容:" + "\r\n" + message);
	        in.close();// 释放资源
	      }
	    private static void editFile() {
	        if (message == "" && filePath == null) {
	          System.out.println("请先新建文件或者打开文件");
	          return;
	        }
	        Scanner sc = new Scanner(System.in);
	        System.out.println("请输入要修改的内容(以 \"修改的目标文字:修改之后的文字\" 格式),"
	            + "停止修改请输入\"stop\":");
	        String inputMessage = "";
	        while (!inputMessage.equals("stop")) {// 当输入stop时,停止修改
	          inputMessage = sc.nextLine();
	          if (inputMessage != null && inputMessage.length() > 0) {
	            // 将输入的文字根据“:”拆分成数组
	            String[] editMessage = inputMessage.split(":");
	            if (editMessage != null && editMessage.length > 1) {
	              // 根据输入的信息将文件中内容替换
	              message = message.replace(editMessage[0], editMessage[1]);
	            }
	          }
	        }
	        System.out.println("修改后的内容:" + "\r\n" + message);
	      }
	    private static void saveFile() throws IOException {
	        Scanner sc = new Scanner(System.in);
	        FileWriter out = null;
	        if (filePath != null) {// 文件是由“打开”载入的
	          out = new FileWriter(filePath);// 将原文件覆盖
	        } else {// 新建的文件
	          System.out.print("请输入文件保存的绝对路径:");
	          String path = sc.next();// 获取文件保存的路径
	          filePath = path;
	          // 将输入路径中大写字母替换成小写字母后判断是不是文本格式
	          if (!filePath.toLowerCase().endsWith(".txt")) {
	            filePath += ".txt";
	          }
	          out = new FileWriter(filePath);// 构造输出流
	        }
	        out.write(message);// 写入暂存的内容
	        out.close();// 关闭输出流
	        message = "";// 修改文件前现将写入内容置空
	        filePath = null;// 将文件路径至null
	      }
	    private static void exit() {
	        System.out.println("您已退出系统,谢谢使用!");
	        System.exit(0);
	      }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金石不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值