个人推荐:
📢📢📢 前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下
"通俗易懂,风趣幽默"
,感觉非常有意思,忍不住分享一下给大家。点击跳转到教程。
一:程序框架图
二:代码详情
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流,其他模块只是通过字符串相应的操作,来实现相应业务(除退出模块)。