package zuoye;
import java.io.FileNotFoundException;
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 sc=new Scanner(System.in);
System.out.println("--1:新建文件 2:打开文件 3:修改文件 4:保存 5:退出--");
while(true){
System.out.println("请输入操作指令:");
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() {
// TODO 自动生成的方法存根
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 IOException {
// TODO 自动生成的方法存根
message ="";//打开文件时,将暂存内容清空
Scanner sc=new Scanner(System.in);
System.out.println("请输入打开文件的位置:");
filePath=sc.next();//获取打开文件的路径
//控制只能输入TXT格式的文件路径
if(filePath !=null && !filePath.endsWith(".txt")) {
System.out.println("请选择文本文件!");
return;
}
FileReader in =new FileReader(filePath);//实例化一个FileReader对象
char[] charArry=new char[1024];//缓冲数组
int len =0;
StringBuffer sb=new StringBuffer();
//循环读取,一次读取一个字符数组
while ((len=in.read(charArry))!=-1) {
sb.append(charArry);
}
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() {
// TODO 自动生成的方法存根
System.out.println("您已退出系统,谢谢使用");
System.exit(0);
}
}
一键复制
编辑
Web IDE
原始数据
按行查看
历史