IO----文件的读写和创建

IO
Input、Output—–输入与输出。当我们的Java程序需要和外部进行数据交换的时候,就需要用到输入输出流了。

  • 输入:数据从外部进入Java程序
  • 输出:数据从Java程序进入外部

Java的流操作分为字节流和字符流

  1. 字节流(能操作任意类型的数据)

所有的读操作都继承自一个公共超类 : java.io.InputStream类
所有的写操作都继承自一个公共超类 :java.io.OutputStream类
  1. 字符流(能操作文本信息)

所有的读操作都继承自一个公共超类 : java.io.Reader类
所有的写操作都继承自一个公共超类 :java.io.Writer类

下面来实现一下文件的读写和创建

package com0907;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class RWFile {

    //读写文件
    public byte[] Read(String FileName){
        try {
            //创建流
            InputStream in = new FileInputStream(FileName);
            //获取文件所有的字节数
            int length = in.available();
            //创建字节数组
            byte[] content = new byte[length];
            in.read(content);
            //关闭流
            in.close();
            return content;
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new byte[0];
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new byte[0];
        }
    }

    //创建目录
    public void createDir(String dirName){
        File dir = new File(dirName);
        //判断目标目录是否存在
        if(dir.exists()){
            System.out.println("创建"+dirName+"目录失败!目标目录已经存在!!!");
        }
        //解决跨平台问题
        if(!dirName.endsWith(File.separator)){
            dirName = dirName + File.separator;
        }
        //创建目录
        if(dir.mkdirs()){
            System.out.println("创建目录:"+dirName+"成功!");
        }else {
            System.out.println("创建目录:"+dirName+"失败!");
        }
    }

    //创建文件
    public void createFile(String fileName){
        File file = new File(fileName);
        //判断文件是否存在
        if(file.exists()){
            System.out.println("创建文件"+fileName+"失败,目标文件已经存在!");
        }
        if(fileName.endsWith(File.separator)){
            System.out.println("创建文件失败,目标文件不能为目录!");
        }
        //判断目标文件所在的目录是否存在
        if(!file.getParentFile().exists()){
            System.out.println("目标文件所在的目录不存在,正准备创建它!");
        }
        //创建目标文件
        try {
            file.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void main(String[] args){
        RWFile rwfile = new RWFile();
        byte[] content;
        content = rwfile.Read("C:\\Users\\sunxiaona\\Desktop\\Java\\OPP\\src\\io\\RWFile.java");
        //生成字符串
        String str = new String(content);
        System.out.println(str);
        //创建目录
        String dir = "D:\\first\\second\\third";
        rwfile.createDir(dir);
        //创建文件
        String file = dir + "\\file.txt";
        rwfile.createFile(file);
        try {
            OutputStream out = new FileOutputStream(file);
            try {
                out.write(content);
                out.close();    //关闭流
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

猜你喜欢

转载自blog.csdn.net/A_D_I_D_A_S/article/details/82560189