java I/O复习

所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流类都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。

File类
File类是java.io包中唯一代表磁盘文件的对象,实现创建、删除、重命名文件等操作,File类的对象主要用来获取文件本身的一些信息。
文件的创建与删除

package com.huangxt.io;

import java.io.File;
import java.io.IOException;

/**
 * @Title: FileTest
 * @Description:
 * @Auther: huangxt
 * @Version: 1.0
 * @create 2019/7/12 12:01
 */
public class FileTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/upload/word.txt");
        if(file.exists()){
            file.delete();
            System.out.println("文件已删除");
        }else{
            file.createNewFile();
            System.out.println("文件已创建");
        }

    }
}

获取文件信息
File类获取文件的方法就不一一列出,可自行查询API。

package com.huangxt.io;

import java.io.File;

/**
 * @Title: FileTest2
 * @Description:
 * @Auther: huangxt
 * @Version: 1.0
 * @create 2019/7/12 12:07
 */
public class FileTest2 {
    public static void main(String[] args) {
        File file = new File("D:/upload/word.txt");
        if(file.exists()){
            String name = file.getName();
            Long length = file.length();
            boolean hidden = file.isHidden();
            System.out.println("文件名称:"+name);
            System.out.println("文件长度是:"+length);
            System.out.println("该文件是隐藏文件吗?"+hidden);

        }else{
            System.out.println("该文件不存在");
        }
    }
}

FileInputStream与OutputStream类

package com.huangxt.io;

import sun.security.util.Length;

import java.io.*;

/**
 * @Title: StreamTest
 * @Description:
 * @Auther: huangxt
 * @Version: 1.0
 * @create 2019/7/12 12:49
 */
public class StreamTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/upload/word.txt");
        OutputStream outputStream = new FileOutputStream(file);
        byte[] bytes1 = "我是一只小小小鸟,怎么飞也飞不高奥".getBytes();
        outputStream.write(bytes1);
        outputStream.close();

        InputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[1024];
        int len = inputStream.read(bytes);
        System.out.println("文件中的信息是:"+new String(bytes,0, len));
        inputStream.close();
    }
}

FileReader和FileWriter类

package com.huangxt.io;

import java.io.*;
/**
 * @Title: charIOTest
 * @Description:
 * @Auther: huangxt
 * @Version: 1.0
 * @create 2019/7/12 13:10
 */
public class charIOTest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/upload/word.txt");
        Writer writer = new FileWriter(file);
        String str = "我是一只小小小鸟,怎么飞也飞不高奥";
        writer.write(str);
        writer.close(); //记得关闭,否则可能未出异常

        Reader reader = new FileReader(file);
        char[] chars = new char[1024];
        int len = reader.read(chars);
        System.out.println("文件内容是:"+new String(chars,0,len));
        reader.close();
    }
}

带缓存的输入/输出流
缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()、reset()方法收成为可能。
BufferedInputStream与BufferedOutputStream
BufferedInputStreamlei 可以对所有InputStream类进行带缓存区的包装已达到性能的优化。BufferedInputStream类有两个构造方法:
BufferdInputStream(InputStream in)
BufferdInputStream()InputStream in,int size)
第一种形式的构造方法创建了一个带有32个字节的缓存流;第二种形式的构造方法按指定的大小来创建缓存区。
一个最优的缓存区的大小,取决于他所在的操作系统、可用的内存空间以及机器配置。
BufferedOutputStream类也有两个构造方法:
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
第一种构造方法创建有一个32个字节的缓存区,第二种构造方法以指定的大小来创建缓存区。

数据输入/输出流
数据输入/输出流(DataInputStream类与DataOutputStream类)

package com.huangxt.io;

import java.io.*;

/**
 * @Title: Example
 * @Description:
 * @Auther: huangxt
 * @Version: 1.0
 * @create 2019/7/12 17:49
 */
public class Example {
    public static void main(String[] args) throws Exception {
        FileOutputStream fileOutputStream = new FileOutputStream("D:/upload/word.txt");
        DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
        dataOutputStream.writeUTF("使用writeUTF方法写入数据");
        dataOutputStream.writeChars("使用writeChars方法写入数据");
        dataOutputStream.writeBytes("使用writeBytes方法写入数据");
        fileOutputStream.close();
        dataOutputStream.close();

        FileInputStream fileInputStream = new FileInputStream("D:/upload/word.txt");
        DataInputStream dataInputStream = new DataInputStream(fileInputStream);
        System.out.println(dataInputStream.readUTF());
    }
}

如果writeChars()和writeBytes()方法写入字符串后,在读取回来就不容易了。

ZIP压缩输入/输出流
ZipOutputStream与ZipInputStream类来实现文件的压缩/解压缩。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值