学习了Java的一些基础知识,编写一个功能超级简单记事本。
首先一个大的框架要建立起来,比如说Windows的记事本,有新建文件,打开文件,修改文件,保存等等功能,话不多说,直接上代码。
private static String filePath;
private static String message = "";
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("1:新建文件 2:打开文件 3:修改文件 4:保存 5:退出");
while(true) {
System.out.println("请输入指令:");
int command = scanner.nextInt();
switch (command) {
case 1:
createFile();
break;
case 2:
openFile();
break;
case 3:
modifyFile();
break;
case 4:
saveFile();
break;
case 5:
exit();
break;
default:
System.out.println("您输入的指令错误!(1-5)");
break;
}
}
}
具体的一些要点我也不知怎么描述才能够通俗易懂。反正学了后就是知道该这么写才行,我也没有在网络上搜别人是怎么写的,这种应该是最简单的吧。 接下来又有几个小框架,我就不多说什么了,这个全部代码运行后操作很简单,看了应该就能直接上手。 新建文件
private static void createFile() {
message = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容,停止时输入\"stop\":");
StringBuffer sBuffer = new StringBuffer();
String inputMessage = "";
while (!inputMessage.equals("stop")) {
if (sBuffer.length()>0) {
sBuffer.append("\r\n");
}
sBuffer.append(inputMessage);
inputMessage = scanner.nextLine();
}
message = sBuffer.toString();
}
打开文件
private static void openFile() throws Exception {
message = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入打开文件的位置:");
filePath = scanner.next();
if (filePath != null && !filePath.endsWith(".txt")) {
System.out.println("请选择文本文件!");
return;
}
FileReader in = new FileReader(filePath);
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 modifyFile() {
if (message == "" && filePath ==null) {
System.out.println("请先新建文件或者打开文件");
return;
}
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的内容(以\"修改的目标文字:修改之后的文字\")," + "停止修改请输入\"stop\":");
String inputMessage = "";
while(!inputMessage.equals("stop")) {
inputMessage = scanner.nextLine();
if (inputMessage != null && inputMessage.length() > 0) {
String[] modifyMessage = inputMessage.split(":");
if (modifyMessage != null && modifyMessage.length > 1) {
message = message.replace(modifyMessage[0], modifyMessage[1]);
}
}
}
System.out.println("修改后的内容:" + "\r\n" + message);
}
保存文件
private static void saveFile() throws IOException {
Scanner scanner = new Scanner(System.in);
FileWriter out = null;
if (filePath != null) {
out = new FileWriter(filePath);
}else {
System.out.println("请输入文件保存的绝对路径:");
String path = scanner.next();
filePath = path;
if (!filePath.toLowerCase().endsWith(".txt")) {
filePath += ".txt";
}
out = new FileWriter(filePath);
}
out.write(message);
out.close();
message = "";
filePath = null;
}
退出
private static void exit() {
System.out.println("您已退出系统,谢谢使用!");
System.exit(0);
}
代码中运用的一些方法肯定是需要导入包的,接下来是完整的代码。
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Notepad {
private static String filePath;
private static String message = "";
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("1:新建文件 2:打开文件 3:修改文件 4:保存 5:退出");
while(true) {
System.out.println("请输入指令:");
int command = scanner.nextInt();
switch (command) {
case 1:
createFile();
break;
case 2:
openFile();
break;
case 3:
modifyFile();
break;
case 4:
saveFile();
break;
case 5:
exit();
break;
default:
System.out.println("您输入的指令错误!(1-5)");
break;
}
}
}
private static void createFile() {
message = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容,停止时输入\"stop\":");
StringBuffer sBuffer = new StringBuffer();
String inputMessage = "";
while (!inputMessage.equals("stop")) {
if (sBuffer.length()>0) {
sBuffer.append("\r\n");
}
sBuffer.append(inputMessage);
inputMessage = scanner.nextLine();
}
message = sBuffer.toString();
}
private static void openFile() throws Exception {
message = "";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入打开文件的位置:");
filePath = scanner.next();
if (filePath != null && !filePath.endsWith(".txt")) {
System.out.println("请选择文本文件!");
return;
}
FileReader in = new FileReader(filePath);
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 modifyFile() {
if (message == "" && filePath ==null) {
System.out.println("请先新建文件或者打开文件");
return;
}
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的内容(以\"修改的目标文字:修改之后的文字\")," + "停止修改请输入\"stop\":");
String inputMessage = "";
while(!inputMessage.equals("stop")) {
inputMessage = scanner.nextLine();
if (inputMessage != null && inputMessage.length() > 0) {
String[] modifyMessage = inputMessage.split(":");
if (modifyMessage != null && modifyMessage.length > 1) {
message = message.replace(modifyMessage[0], modifyMessage[1]);
}
}
}
System.out.println("修改后的内容:" + "\r\n" + message);
}
private static void saveFile() throws IOException {
Scanner scanner = new Scanner(System.in);
FileWriter out = null;
if (filePath != null) {
out = new FileWriter(filePath);
}else {
System.out.println("请输入文件保存的绝对路径:");
String path = scanner.next();
filePath = path;
if (!filePath.toLowerCase().endsWith(".txt")) {
filePath += ".txt";
}
out = new FileWriter(filePath);
}
out.write(message);
out.close();
message = "";
filePath = null;
}
private static void exit() {
System.out.println("您已退出系统,谢谢使用!");
System.exit(0);
}
}
运行后在控制台看到的是这样,那我也来简单操作一番。 先新建一个。 输入内容后回车输入stop结束。 然后保存试试看。 出现这个报错是因为我D盘里面没有java这个文件夹,找不到指定目录,它保存直接只能是txt文件。 所以我在D盘新建了一个java文件夹后运行就没有报错。 然后去D盘找找看。 再来试下打开功能。 这里就不能输入D:\java\one了,打开文件当然需要文件后缀。
我自己也去搜了一下,好多大佬写的记事本比我这个高级的多,我这个是java初学者应该能写出来的。
|