1

IO流读写

基本功能:

  1. 新建文件
  2. 查看列表
  3. 写文件
  4. 删除文件
  5. 查看文件

导入的包:

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

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;


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

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


haostarlilac
4 声望0 粉丝