Java利用IO流实现简易的记事本功能

要求:编写一个模拟日记本的程序,通过在控制台输入指令,实现在本地新建文件,打开日记本和修改日记本等功能。

指令1代表“新建日记本”,可以从控制台获取用户输入的日记内容

指令2代表“打开日记本”,读取指定路径的TXT文件的内容并输出到控制台

指令3代表“修改日记本”,修改日记本中原有的内容

指令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("注意:每次输入内容后记得保存!");
            System.out.print("请输入操作指令:");
            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("谢谢使用本系统,欢迎下次再来!");
                    System.exit(0);
                    break;
                default:
                    System.out.println("您输入的指令错误!");
                    break;
            }
        }
    }

    //写一个方法写入文件内容
    private static void createFile() {
        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 saveFile() throws Exception {
        FileWriter out = new FileWriter("文件路径", true);
        out.write(message + "\r\n");//将输入内容写入
        message = "";
        out.close();
    }

    //写一个方法打开文件
    public static void openFile() throws Exception {
        Reader r = new FileReader("文件路径");
        BufferedReader br = new BufferedReader(r);
//        char[] c = new char[1024];//定义一个桶装每次读取多少个数据
//        int len;
//        while ((len = br.read(c)) != -1) {//读取所有内容,如果读完所有内容则停止
//            String str = new String(c, 0, len);//每次读取0到len的所有内容
//            System.out.print(str);//因为读取时会自动换行所以这里我们不需要换行
//        }
        String line;
        while ((line = br.readLine()) != null) {//一次读取一行
            System.out.println(line);//因为读取一行时程序不会自己换行,所以这里我们需要给它换行
        }
        //System.out.println();//读完换行
    }

    //写一个方法修改文件
    /**
     * 替换
     * @throws IOException
     */
    public static void editFile() throws IOException{
        Scanner sc = new Scanner(System.in);
        //原有的内容
        System.out.println("原文件内容:");
        String str1 =sc.next();;
        //要替换的内容
        System.out.println("修改成:");
        String str2 =sc.next();
        // 读取
        File file = new File("文件路径");
        FileReader in = new FileReader(file);
        BufferedReader buf = new BufferedReader(in);//缓冲流
        // 内存流, 作为临时流
        CharArrayWriter tempStream = new CharArrayWriter();
        // 替换
        String line = null;
        while ( (line = buf.readLine()) != null) {
            // 替换每行中, 符合条件的字符串
            line = line.replaceAll(str1, str2);//正则表达式
            // 将该行写入内存
            tempStream.write(line+"\r\n");
        }
        // 关闭输入流
        buf.close();
        // 将内存中的流写入文件
        FileWriter fw = new FileWriter(file);
        tempStream.writeTo(fw);
        fw.close();
    }
}

到此这篇关于Java利用IO流实现简易的记事本功能的文章就介绍到这了,更多相关Java记事本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java实现记事本功能

    今天给大家介绍一下关于如何用Java实现记事本功能,是学习Java swing的一个非常好的案例,下面先看一下运行结果: 下面我们来看源码: import java.awt.*; import java.awt.event.*; import java.text.*; import java.util.*; import java.io.*; import javax.swing.undo.*; import javax.swing.border.*; import javax.swing.*;

  • Java实现的简易记事本

    本文实例讲述了Java实现的简易记事本.分享给大家供大家参考.具体如下: 感觉这个没有自己以前用Windows API写的好看了... JDK Version : 1.7.0 效果如下图所示: 源代码如下: import java.io.*; import java.awt.*; import java.awt.event.*; /** * The Main Window * @author Neo Smith */ class PadFrame extends Frame { private

  • 使用Java制作一个简单的记事本

    通过使用Java的Swing.IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后在Swing组件中编辑记事本内容,然后同菜单的保存选项将编辑后的内容保存到text文件中.代码如下: 复制代码 代码如下: import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; import java.awt.*; import

  • Java详解IO流创建读取与写入操作

    目录 概念 io流对应的方法 一.File方法(创建文件) 二.FileInputStream(获取字节方法)输入流 三.FileOutputStream(写入字节方法)输出流 总结 概念 IO流可以初步的理解为数据间的传输,我们将一组数据入:1234567,将他们从hello文件中转入haha文件中,使用程序的方法进行转入的话则需要一个一个的传入,即为一个字节一个字节的传输,我们每次只能传入或读取一个字节,这就是io流的大致流程,io流对任何类型的文件都可以进行读取.如:文本文件,图片,歌曲m

  • 基于Java实现记事本功能

    本文实例为大家分享了Java实现记事本的具体代码,供大家参考,具体内容如下 编写一个具有菜单以及编辑.查找.替换.复制.粘贴功能,且具有新建.打开和保存文件功能的记事本(MyNotepad). package ch7; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; imp

  • Java利用IO流实现简易的记事本功能

    要求:编写一个模拟日记本的程序,通过在控制台输入指令,实现在本地新建文件,打开日记本和修改日记本等功能. 指令1代表“新建日记本”,可以从控制台获取用户输入的日记内容 指令2代表“打开日记本”,读取指定路径的TXT文件的内容并输出到控制台 指令3代表“修改日记本”,修改日记本中原有的内容 指令4代表保存 指令5代表退出 import java.io.*; import java.util.Scanner; public class IO_日记本 { /** * 模拟日记本程序 */ privat

  • Java基于IO流实现登录和注册功能

    案例分析: 我们之前做过的登录注册案例是把用户信息存进集合里,要用IO流实现的话,就是要把用户信息存入文件中.登录注册两个功能的具体实现是在用户操作类中,所以我们只需要在用户操作类中把之前用户信息存进集合改为存进文件就可以了. 用到的类的详细分解: (1)用户类(User):用户名,密码,邮箱,电话号码等等各种注册时会用到的东西.我们在实现这个登录和注册案例的时候只需要用户名和密码就够了.这是一个标准Java描述类. package com.edu.domain; public class Us

  • Java中IO流 字节流实例详解

    Java中IO流 字节流实例详解 IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据

  • java使用IO流对数组排序实例讲解

    在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法.大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很多人对于排序的方法还没有明确.下面我们先java使用流对数组排序的思路为大家进行梳理,然后带来对应的实例代码方法. 1.排序思路 (1)从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取 (2)询问用户需要多少位数的数组 (3)转换为数字类型 (4)将用户输入数字存入数组 (5)把数组按排序需求并打印出来 2.实例 public stat

  • Java中IO流文件读取、写入和复制的实例

    //构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.list(); //获取目录下的文件 File[] files=f.listFiles(); 1.Java怎么读取文件 package com.yyb.file; import java.io.File; import java.io.FileInputStream; import java.io.In

  • Java 使用IO流实现大文件的分割与合并实例详解

    Java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分开复制, 最后把三个文件合并, 这样就解决问题了 :再比如说, 你有一个上百M的文件要上传到FTP ,但是这个FTP限制你单个文件不能超过10M 这时候也可以用文件分割的办法解决问题.既然分割了,那么在我们再次使用的时候就需要合并了,今天我们就通过Java

  • Java关于IO流的全面介绍

    JDK提供的流继承了四大类:InputStream(字节输入流).OutputStream(字节输出流).Reader(字符输入流).Writer(字符输出流). 字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时.先去查指定的编码表,将查到的字符返回. 2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据. 只要是处理纯文本数据,就要

  • Java中IO流 RandomAccessFile类实例详解

    Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

  • Java基于IO流读取文件的方法

    本文实例讲述了Java基于IO流读取文件的方法.分享给大家供大家参考,具体如下: public static void readFile(){ String pathString = TEST.class.getResource("/simu").getFile(); try { pathString = URLDecoder.decode(pathString, "utf-8"); } catch (UnsupportedEncodingException e1)

  • java的IO流详细解读

    流,就是一系列的数据. 当不同介质之间有数据交互的时候,JAVA就使用流来实现.数据源可以是文件,还可以是数据库.网络甚至其他的程序. 比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流. 字节流(以字节的形式读取和写入数据) InputStream字节输入流同时也是抽象类,只提供方法声明,不提供方法的具体实现. FileInputStream是InputStream的子类,下面以FileInputStream为例进行文件读取 package testIO; import java.i

随机推荐