File 类和 InputStream, OutputStream 的用法总结

 

目录

一、File 类

1.File类属性

2.构造方法

3.普通方法

二、InputStream

1.方法

2.FileInputStream

三、OutputStream 

1.方法

2.FileOutputStream

四、针对字符流对象进行读写操作 


一、File 类

1.File类属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String类型的表示
static charpathSeparator依赖于系统的路径分隔符,char类型的表示

2.构造方法

签名说明
File(File parent, Stringchild)根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname)根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径
File(String parent, Stringchild)根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示

3.普通方法

 下面代码是一些普通方法的使用例子

import java.io.File;
import java.io.IOException;
 
public class IoDemo1 {
 
    public static void main(String[] args) throws IOException {
        File file = new File("D:/手机照片备份/myphone_72089A8996EA/知乎");
 
        System.out.println(file.getParent()); //上一级路径
        System.out.println(file.getName());   //文件名字
        System.out.println(file.getPath());   // 相对路径
        System.out.println(file.getAbsolutePath());   //绝对路径
        System.out.println(file.getCanonicalPath());  //修饰过的绝对路径
    }
}

下面是方法的部分说明:

二、InputStream

1.方法

签名说明
read()读取一个字节的数据,返回 -1 代表已经完全读完了
read(byte[] b)最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表以及读完了
read(byte[] b,int off, int len)最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量;-1 代表以及读完了
close()关闭字节流

InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream 类,我们现在只关心从文件中读取,所以使用FileInputStream


2.FileInputStream

构造方法:

签名说明
FileInputStream(File file)利用 File 构造文件输入流
FileInputStream(String name)利用文件路径构造文件输入流

 读取文件操作:

package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class IODemo6 {
    public static void main(String[] args) throws IOException {
        // 这个过程, 相当于 C 中的 fopen , 文件的打开操作~~
//        InputStream inputStream = null;
//        try {
//            inputStream = new FileInputStream("d:/test.txt");
//        } finally {
//            inputStream.close();
//        }

        try (InputStream inputStream = new FileInputStream("d:/test.txt")) {
            // 读文件
            // read 一次返回的是一个字节. 但是此处的返回值类型是 int !!!
            while (true) {
                int b = inputStream.read();
                if (b == -1) {
                    // 读到末尾了, 结束循环即可
                    break;
                }
                System.out.printf("%x\n", b);
            }
        }
    }
}

三、OutputStream 

1.方法

签名说明
write(int b)写入要给字节的数据
write(byte[]b))将 b 这个字符数组中的数据全部写入 os 中
write(byte[]b, int off,int len)将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个
close()关闭字节流
flush()    我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备中。

2.FileOutputStream

构造方法:

签名说明
FileOutputStream(File file)利用 File 构造文件输出流
FileOutputStream(String name)利用文件路径构造文件输出流

 写入文件操作:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;

public class IODemo7 {


    public static void main(String[] args) {

        try (OutputStream outputStream = new FileOutputStream("f:/bb.txt ")){
            outputStream.write(97);
            outputStream.write(98);
            outputStream.write(99);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

四、针对字符流对象进行读写操作 

使用reader进行文件的读操作。

import java.io.*;

public class IODemo6 {


    public static void main(String[] args) throws IOException {



        try (Reader reader = new FileReader("F:/bb.txt" )){
            while (true){
               int b = reader.read();
            if (b == -1){
                break;
            }
                System.out.printf("%x\n", b);
            }
        }
    }
}

  使用write进行写操作

import java.io.*;
public class text {
    public static void main(String[] args) throws IOException {
        Writer writer=new FileWriter("D:/xxx.txt");
        writer.write("123456");
        writer.close();
    }
}

以上就是这三个内容的概述,希望对你有帮助 

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值