基于普通IO流的小说管理系统

来源:互联网 发布:铲形门齿 知乎 编辑:程序博客网 时间:2024/05/22 23:25

IO流读写
昨天用java写了一个用io流来操作本地文件的dos程序。基本功能就是

  • 1.新建文件
  • 2.查看列表
  • 3.写文件
  • 4.删除文件
  • 5.查看文件
  • 6.退出
  • -

导入的包:

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;import javax.swing.plaf.synth.SynthSeparatorUI;

下面新建一个类,然后在main函数里初始化一个方法,方法中用if来判断输入的值所相对应的功能板块。

    public static void main(String[] args) {            init();//初始化方法    }    public static void init(){        Scanner in = new Scanner(System.in);        boolean flag = true;        System.out.println("========小说系统=======");        while(flag){            System.out.println("请选择:1  新建文件    2  查看文件列表    3  写文件   4  删除文件   5 查看文件内容   6 退出");            int i = in.nextInt();            if(i == 1){                //新建流程                createFile(in);            }else if(i == 2){                //查看文件列表                showFiles();            }else if(i == 3){                //写文件                writeFile(in);            }else if(i == 4){                //删除文件                removeFile(in);            }else if(i == 5){                //查看文件内容                showFileContent(in);            }else if(i == 6){                //退出                flag = false;            }        }    }

下面我会对每个板块的功能进行描述:
1.新建功能

//新建文件的方法    public static void createFile(Scanner in){            System.out.println("请输入文件名称:");            //给文件命名            String filename = in.next();            //这里的文件夹自己创建或者自己定义就好            File f = new File("e://io/"+filename+".txt");               try {                f.createNewFile();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }       }

2.查看文件下的所有文件方法:

//查看文件列表的方法;    public static void showFiles(){        File file = new File("E://io");        //获取指定文件夹下的文件数组的特定方法        File[] files = file.listFiles();        //遍历文件夹下的所有文件名        for(File f:files){            System.out.println(f.getName());        }    }

3.写文件内容的方法

//写文件方法        public static void writeFile(Scanner in){            System.out.println("请输入要写的文件的名称:");            String filename=in.next();            System.out.println("请输入信息:");            String content=in.next();                       try {                BufferedOutputStream out=null;                out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));                out.write(("\r\n\t "+content).getBytes());                //缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中                out.flush();                out.close();            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }

4.删除文件方法

//删除文件方法        public static void removeFile(Scanner in){            System.out.println("请输入你要删除的文件名:");            String filename = in.next();            File f = new File("e://io/"+filename+".txt");            if(f.exists()){                //判断文件是否存在                boolean b = f.delete();                if(b){                    System.out.println("文件删除成功");                }            }else{                System.out.println("请重新选择主菜单");            }           }

5.查看文件内容的方法:

//查看文件内容的方法        public static void showFileContent(Scanner in){        System.out.println("请输入文件名字:");        String filename = in.next();        try {            BufferedInputStream bufferedInput = null;            bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));            int n;            byte[] buffer = new byte[1024];            String chunk = null;            // read():读入一个字节,当有中文的时候不可用,所以这里用数组来存每一个字符,最后转成字符串输出            // 从文件中按字节读取内容,到文件尾部时read方法将返回-1            while ((n = bufferedInput.read(buffer)) != -1) {                chunk = new String(buffer, 0, n);                System.out.print(chunk);            }            bufferedInput.close();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        }

基本功能实现完成,下面发一下所有的源代码:

package com.stx.xs;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;import javax.swing.plaf.synth.SynthSeparatorUI;/***@author : Hao-Starlilac*@version : Beta1.0*Date : 2017年5月16日 下午5:03:19*/public class System {    public static void main(String[] args) {            init();//初始化方法    }    public static void init(){        Scanner in = new Scanner(System.in);        boolean flag = true;        System.out.println("========欢迎使用双体系小说系统=======");        while(flag){            System.out.println("请选择:1  新建文件    2  查看文件列表    3  写文件   4  删除文件   5 查看文件内容   6 退出");            int i = in.nextInt();            if(i == 1){                //新建流程                createFile(in);            }else if(i == 2){                //查看文件列表                showFiles();            }else if(i == 3){                //写文件                writeFile(in);            }else if(i == 4){                //删除文件                removeFile(in);            }else if(i == 5){                //查看文件内容                showFileContent(in);            }else if(i == 6){                //退出                flag = false;            }        }    }    //新建文件的方法    public static void createFile(Scanner in){            System.out.println("请输入文件名称:");            //给文件命名            String filename = in.next();            File f = new File("e://io/"+filename+".txt");            try {                f.createNewFile();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }       }    //查看文件列表的方法;    public static void showFiles(){        File file = new File("E://io");        File[] files = file.listFiles();//获取指定文件夹下的文件数组        for(File f:files){            System.out.println(f.getName());        }    }    //写文件方法        public static void writeFile(Scanner in){            System.out.println("请输入要写的文件的名称:");            String filename=in.next();            System.out.println("请输入信息:");            String content=in.next();                       try {                BufferedOutputStream out=null;                out=new BufferedOutputStream(new FileOutputStream("e://io/"+filename+".txt",true));                out.write(("\r\n\t "+content).getBytes());                //缓存流需要注意flush方法的使用,flush方法可在缓存区未满的情况下,将缓存内容写出到外部设备中                out.flush();                out.close();            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        //删除文件方法        public static void removeFile(Scanner in){            System.out.println("请输入你要删除的文件名:");            String filename = in.next();            File f = new File("e://io/"+filename+".txt");            if(f.exists()){                //判断文件是否存在                boolean b = f.delete();                if(b){                    System.out.println("文件删除成功");                }            }else{                System.out.println("请重新选择主菜单");            }           }        //查看文件内容的方法        public static void showFileContent(Scanner in){        System.out.println("请输入文件名字:");        String filename = in.next();        try {            BufferedInputStream bufferedInput = null;            bufferedInput = new BufferedInputStream(new FileInputStream("e://io/"+filename+".txt"));            int n;            byte[] buffer = new byte[1024];            String chunk = null;            // read():读入一个字节            // 从文件中按字节读取内容,到文件尾部时read方法将返回-1            while ((n = bufferedInput.read(buffer)) != -1) {                chunk = new String(buffer, 0, n);                System.out.print(chunk);            }            bufferedInput.close();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        }}

当然啦,只是实现了基本的功能,对于一些细节没有处理,比如输入的时候如果有字符怎么处理等情况。这里也只限制于在正常情况下的输入输出。

原创粉丝点击