用java写一个记事本程序,拥有文件打开、保存、编辑、查找的功能

时间: 2024-05-15 13:18:11 浏览: 8
好的,我可以提供一个简单的Java记事本程序的示例代码,具有文件打开、保存、编辑和查找功能。请注意,此代码仅用于学习和参考,有关生产级别代码和安全性的考虑,请参考相关文档和实践。 ```java import java.io.*; import java.util.Scanner; public class Notepad { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String filename = ""; String line = ""; while (true) { // menu System.out.println("Choose an option:"); System.out.println("1 - Open file"); System.out.println("2 - Save file"); System.out.println("3 - Edit file"); System.out.println("4 - Find text"); System.out.println("0 - Exit"); // read option from user input int option = scanner.nextInt(); scanner.nextLine(); // consume the newline character switch (option) { case 1: // open file System.out.print("Enter filename: "); filename = scanner.nextLine(); try { FileReader fileReader = new FileReader(filename); BufferedReader bufferedReader = new BufferedReader(fileReader); while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); } catch (IOException e) { System.out.println("Error reading file: " + e.getMessage()); } break; case 2: // save file System.out.print("Enter filename: "); filename = scanner.nextLine(); try { FileWriter fileWriter = new FileWriter(filename); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); while (!(line = scanner.nextLine()).equals(":wq")) { bufferedWriter.write(line); bufferedWriter.newLine(); } bufferedWriter.close(); } catch (IOException e) { System.out.println("Error writing file: " + e.getMessage()); } break; case 3: // edit file System.out.print("Enter filename: "); filename = scanner.nextLine(); // read the file into a StringBuilder object StringBuilder sb = new StringBuilder(); try { FileReader fileReader = new FileReader(filename); BufferedReader bufferedReader = new BufferedReader(fileReader); while ((line = bufferedReader.readLine()) != null) { sb.append(line); sb.append(System.lineSeparator()); } bufferedReader.close(); } catch (IOException e) { System.out.println("Error reading file: " + e.getMessage()); break; } // edit the content System.out.println("Edit the content. Enter ':wq' to save and exit."); String content = sb.toString(); int index = content.lastIndexOf(System.lineSeparator()); System.out.print(content.substring(0, index + 1)); String newContent = ""; while (!(line = scanner.nextLine()).equals(":wq")) { newContent += line + System.lineSeparator(); } newContent += System.lineSeparator(); // save the edited content back to the file try { FileWriter fileWriter = new FileWriter(filename); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(newContent + content.substring(index + 1)); bufferedWriter.close(); } catch (IOException e) { System.out.println("Error writing file: " + e.getMessage()); } break; case 4: // find text System.out.print("Enter filename: "); filename = scanner.nextLine(); System.out.print("Enter text to find: "); String text = scanner.nextLine(); try { FileReader fileReader = new FileReader(filename); BufferedReader bufferedReader = new BufferedReader(fileReader); int lineNumber = 1; boolean found = false; while ((line = bufferedReader.readLine()) != null) { if (line.contains(text)) { System.out.println("Found at line " + lineNumber + ": " + line); found = true; } lineNumber++; } bufferedReader.close(); if (!found) { System.out.println("Text not found in the file."); } } catch (IOException e) { System.out.println("Error reading file: " + e.getMessage()); } break; case 0: // exit System.out.println("Bye!"); System.exit(0); break; default: System.out.println("Invalid option. Please choose again."); break; } } } } ``` 这个程序基于命令行,它可以使用Java的标准输入输出和文件读写API,实现简单的文件处理功能。在文件打开时,可以按行读取文件中的内容并输出到控制台。在文件保存时,可以将用户在命令行输入的内容写入文件中。在文件编辑时,它会先将文件读取到StringBuilder对象中,再在命令行中提示用户输入要编辑的内容。当用户输入“:wq”时,编辑完成,并将所做的更改写回到原始文件中。在查找文件时,可以读取文件并逐行搜索包含指定文本的行。

相关推荐

最新推荐

recommend-type

JAVA简单记事本程序设计实验报告(带源码)

JAVA简单记事本程序设计实验报告(带源码) ...4.功能要求: 编写一个简单记事本程序,要求包含以下菜单项 文件 新建、打开、保存、退出 编辑 剪切、拷贝、粘贴、查找 帮助 关于 5.实现文件和编辑菜单里的功能
recommend-type

java记事本的设计与实现

本组课程设计的课题是“记事本的设计与实现”,设计的记事本系统应具有新建、打开、保存、剪切、复制、粘贴、查找、字体设置等基本功能,满足用户对文件的处理,文本文档的编辑和字体的设置等要求。
recommend-type

JAVA记事本课程设计报告

一、记事本 (一)记事本界面 (1)菜单栏、菜单、菜单子条目 (2)可用于编辑的文本区 (二)文件菜单 (1)新建功能 (2)打开功能 (3)保存功能 (4)另存为功能 (5)退出功能 (三)编辑菜单 (1)撤销功能 ...
recommend-type

记事本的设计与实现Java版实验报告

1需求分析 2 2总体设计 2 3详细设计&主要功能说明 2 3.1主窗体 2 ...文件一(主类):NoteBook.java 18 文件二:MyNote.java 19 文件三:ShowDialog.java 48 文件四:FontDialog.java 50 文件五:Help.java 58
recommend-type

WX小程序源码小游戏类

WX小程序源码小游戏类提取方式是百度网盘分享地址
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。