Java利用IO流實(shí)現(xiàn)簡(jiǎn)易的記事本功能
要求:編寫一個(gè)模擬日記本的程序,通過(guò)在控制臺(tái)輸入指令,實(shí)現(xiàn)在本地新建文件,打開日記本和修改日記本等功能。
指令1代表“新建日記本”,可以從控制臺(tái)獲取用戶輸入的日記內(nèi)容
指令2代表“打開日記本”,讀取指定路徑的TXT文件的內(nèi)容并輸出到控制臺(tái)
指令3代表“修改日記本”,修改日記本中原有的內(nèi)容
指令4代表保存
指令5代表退出
import java.io.*;
import java.util.Scanner;
public class IO_日記本 {
/**
* 模擬日記本程序
*/
private static String filePath;
private static String message = "";
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("---------日記本---------");
System.out.println("1.寫日記");
System.out.println("2.查看日記");
System.out.println("3.修改日記");
System.out.println("4.保存");
System.out.println("5.退出");
System.out.println("注意:每次輸入內(nèi)容后記得保存!");
System.out.print("請(qǐng)輸入操作指令:");
int command = sc.nextInt();
switch (command) {
case 1:
// 1:新建文件(寫日記)
createFile();
break;
case 2:
// 2:打開文件(查看日記)
openFile();
break;
case 3:
// 3:修改文件
editFile();
break;
case 4:
// 4:保存
saveFile();
break;
case 5:
// 5:退出
System.out.println("謝謝使用本系統(tǒng),歡迎下次再來(lái)!");
System.exit(0);
break;
default:
System.out.println("您輸入的指令錯(cuò)誤!");
break;
}
}
}
//寫一個(gè)方法寫入文件內(nèi)容
private static void createFile() {
message = "";//新建文件時(shí),暫存文件內(nèi)容清空
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入內(nèi)容,停止編寫請(qǐng)輸入:stop");
StringBuffer stb = new StringBuffer();//用于后期輸入內(nèi)容的拼接
String inputMessage = "";
while (!inputMessage.equals("stop")) {//輸入stop則停止
if (stb.length() > 0) {
stb.append("\r\n");//追加換行符
}
stb.append(inputMessage);//拼接輸入信息
inputMessage = sc.nextLine();//獲取輸入信息
}
message = stb.toString();//將輸入內(nèi)容緩存
}
//寫一個(gè)方法保存文件
private static void saveFile() throws Exception {
FileWriter out = new FileWriter("文件路徑", true);
out.write(message + "\r\n");//將輸入內(nèi)容寫入
message = "";
out.close();
}
//寫一個(gè)方法打開文件
public static void openFile() throws Exception {
Reader r = new FileReader("文件路徑");
BufferedReader br = new BufferedReader(r);
// char[] c = new char[1024];//定義一個(gè)桶裝每次讀取多少個(gè)數(shù)據(jù)
// int len;
// while ((len = br.read(c)) != -1) {//讀取所有內(nèi)容,如果讀完所有內(nèi)容則停止
// String str = new String(c, 0, len);//每次讀取0到len的所有內(nèi)容
// System.out.print(str);//因?yàn)樽x取時(shí)會(huì)自動(dòng)換行所以這里我們不需要換行
// }
String line;
while ((line = br.readLine()) != null) {//一次讀取一行
System.out.println(line);//因?yàn)樽x取一行時(shí)程序不會(huì)自己換行,所以這里我們需要給它換行
}
//System.out.println();//讀完換行
}
//寫一個(gè)方法修改文件
/**
* 替換
* @throws IOException
*/
public static void editFile() throws IOException{
Scanner sc = new Scanner(System.in);
//原有的內(nèi)容
System.out.println("原文件內(nèi)容:");
String str1 =sc.next();;
//要替換的內(nèi)容
System.out.println("修改成:");
String str2 =sc.next();
// 讀取
File file = new File("文件路徑");
FileReader in = new FileReader(file);
BufferedReader buf = new BufferedReader(in);//緩沖流
// 內(nèi)存流, 作為臨時(shí)流
CharArrayWriter tempStream = new CharArrayWriter();
// 替換
String line = null;
while ( (line = buf.readLine()) != null) {
// 替換每行中, 符合條件的字符串
line = line.replaceAll(str1, str2);//正則表達(dá)式
// 將該行寫入內(nèi)存
tempStream.write(line+"\r\n");
}
// 關(guān)閉輸入流
buf.close();
// 將內(nèi)存中的流寫入文件
FileWriter fw = new FileWriter(file);
tempStream.writeTo(fw);
fw.close();
}
}到此這篇關(guān)于Java利用IO流實(shí)現(xiàn)簡(jiǎn)易的記事本功能的文章就介紹到這了,更多相關(guān)Java記事本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于mybatis遇到Integer類型的參數(shù)時(shí)動(dòng)態(tài)sql需要注意條件
這篇文章主要介紹了關(guān)于mybatis遇到Integer類型的參數(shù)時(shí)動(dòng)態(tài)sql需要注意條件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
JAVA匿名內(nèi)部類語(yǔ)法分析及實(shí)例詳解
這篇文章主要介紹了JAVA匿名內(nèi)部類語(yǔ)法分析及實(shí)例詳解,匿名內(nèi)部類可以使你的代碼更加簡(jiǎn)潔,它與局部類很相似,不同的是它沒(méi)有類名,如果某個(gè)局部類你只需要用一次,那么你就可以使用匿名內(nèi)部類。對(duì)此感興趣的可以了解一下2020-07-07
java基于servlet實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了java基于servlet實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Spring boot配置多數(shù)據(jù)源代碼實(shí)例
這篇文章主要介紹了Spring boot配置多數(shù)據(jù)源代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Spring @Transaction 注解執(zhí)行事務(wù)的流程
這篇文章主要介紹了Spring @Transaction 注解執(zhí)行事務(wù)的流程,Spring 是如何開啟事務(wù)的?又是如何進(jìn)行提交事務(wù)和關(guān)閉事務(wù)的,本文給大家詳細(xì)介紹,需要的朋友可以參考下2021-06-06
java 使用JDBC構(gòu)建簡(jiǎn)單的數(shù)據(jù)訪問(wèn)層實(shí)例詳解
以下是如何使用JDBC構(gòu)建一個(gè)數(shù)據(jù)訪問(wèn)層,包括數(shù)據(jù)轉(zhuǎn)換(將從數(shù)據(jù)庫(kù)中查詢的數(shù)據(jù)封裝到對(duì)應(yīng)的對(duì)象中……),數(shù)據(jù)庫(kù)的建立,以及如何連接到數(shù)據(jù)庫(kù),需要的朋友可以參考下2016-11-11
簡(jiǎn)單了解Java中多態(tài)的基礎(chǔ)知識(shí)
這篇文章主要介紹了簡(jiǎn)單了解Java中的多態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
使用Springboot+Vue實(shí)現(xiàn)文件上傳和下載功能
本文介紹了如何使用Springboot結(jié)合Vue進(jìn)行圖書信息管理系統(tǒng)開發(fā),包括數(shù)據(jù)庫(kù)表的創(chuàng)建,實(shí)體類、Dao層、Service層和Controller層的編寫,重點(diǎn)講解了文件上傳和下載功能的實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧2024-09-09

