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

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();
        }
        }
}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值