Java字节流和字符流、AutoCloseable自动关闭支持

  时间:2019-02-11
本文章向大家介绍Java字节流和字符流、AutoCloseable自动关闭支持,主要包括Java字节流和字符流、AutoCloseable自动关闭支持使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.字节流是原生的操作,而字符流是经过处理后的操作
2.对于IO操作属于资源处理,所有的资源处理操作(IO操作、数据库操作、网络)最后必须要进行关闭。
3.字符流适合处理中文,字节流适合处理一切数据类型

一、字节输出流OutputStream

实现程序输出内容到文件的处理

  1. 接收File类(覆盖):public FileOutputStream(File file) throws FileNotFoundException
  2. 接收File类(追加):public FileOutputStream(File file, boolean append)
  3. 将给定的字节数组内容全部输出:public void write(byte b[]) throws IOException
  4. 将部分字节数组内容输出:public void write(byte b[], int off, int len) throws IOException
public class FileTest1 {
    public static void main(String[] args) throws Exception {
       
        File file=new File(File.separator + "F:" + File.separator + "Java" +
                File.separator + "Test1"
                + File.separator + "HH.txt");
        
        //如果父类目录不存在创建多级目录
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        // OutputStream是一个抽象类,所以需要通过子类进行实例化
        // 此时只能操作File类
        OutputStream output1=new FileOutputStream(file);
       
        //追加接收File类(追加):
        OutputStream output=new FileOutputStream(file,true);
      
        // 要求输出到文件的内容
        String message="hello java !!!";
       
        // 1.将全部内容变为字节数组
        output.write(message.getBytes());

        //2.将部分内容变为字节数组
       output.write(message.getBytes(),0,5);

        output.close();
    }
}

二、字节输入流InputStream

//实现文件信息的读取
public class InputStreamTest {
    public static void main(String[] args) throws IOException {
        File file = new File(File.separator + "F:" + File.separator + "Java"
                + File.separator + "Test1" + File.separator + "HH.txt");
        // 2.必须保证文件存在才能进行处理
        if (file.exists()) {
            InputStream input = new FileInputStream(file);
            byte[] data = new byte[1024]; // 每次可以读取的最大数量
            int len = input.read(data); // 此时的数据读取到了数组之中
            String result = new String(data, 0, len); // 将字节数组转为String
            System.out.println("读取内容【" + result + "】");
            input.close();
        }
    }
}

三、字符输入流

如果要操作文件使用FileReader。
Writer类中提供有方法直接向目标源写入字符串,而在Reader类中没有方法可以直接读取字符串类型,这个时候只能通过字符数组进行读取操作

public class ReaderTest {
    public static void main(String[] args) throws IOException {
        File file=new File(File.separator + "F:" + File.separator + "Java" +
                File.separator + "Test1"
                + File.separator + "BB.txt");
        // 2.必须保证文件存在才能进行处理
        if (file.exists()) {
            Reader in = new FileReader(file) ;
            char[] data = new char[1024] ;
            int len = in.read(data) ; // 将数据读取到字符数组中
            String result = new String(data, 0, len) ;
            System.out.println("读取内容【"+result+"】") ;
            in.close();
        }
    }
}

四、字符输出流

有直接输出字符串的方法public void write(String str) throws IOException,如果要操作文件使用FileWriter子类

public class WriterTest {
    public static void main(String[] args) throws IOException {
        File file=new File(File.separator + "F:" + File.separator + "Java" +
                File.separator + "Test1"
                + File.separator + "BB.txt");
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        String a="ok!";
        Writer out=new FileWriter(file);
        out.write(a);
        out.close();
    }

五、

上一页 下一页

原文地址:http://www.manongjc.com/article/51719.html