Java基础语法-IO流

 输入流输出流
字节流InputStreamOutputStream
字符流ReaderWriter

 

 

 

 

一、FileOutputStream(文件字节输出流)

FileOutputStream extends OutputStream。

构造方法:

FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出流文件流。

FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流。

1.构造方法的作用:

(1).创建一个FileOutputStream对象。

(2).会根据构造方法中传递的文件或文件路径,创建一个空的文件。

(3).会把FileOutputStream对象指向创建好的文件。

2.字节输出流的使用步骤:

(1).创建一个FileOutputStream对象,构造方法中传递写入数据的目的地。

(2).调用FileOutputStream对象中的方法write,把数据写入文件中。

(3).释放资源。

代码示例:

try {
    FileOutputStream fos = new FileOutputStream("E:\\iostream\\a.txt");
    fos.write('a');
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}

写入多个字节:

try {
    FileOutputStream fos = new FileOutputStream(new File("E:\\iostream\\b.txt"));
    //byte[] bytes = {65,66,67,68,69};
    byte[] bytes = "hello world!".getBytes();
    fos.write(bytes);
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}

3.字节输出流的续写和换行

try {
    FileOutputStream fos = new FileOutputStream(new File("E:\\iostream\\c.txt"),true);
    for (int i = 0; i < 10; i++) {
        fos.write("hello world!".getBytes());
        fos.write("\r\n".getBytes());//换行 window:\r\n,linux:/n
    }
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}

二、FileInputStream(文件字节输入流)

FileInputStream extends InputStream

构造方法:

FileInputStream(String name):

FileInputStream(File file):

1.构造方法的作用:

(1).创建一个FileInputStream对象。

(2).会把FileInputStream对象指定构造方法中要读取的文件。

2.字节输入流的使用步骤:

(1).创建FileInputStream对象,构造方法中绑定要读取的数据源。

(2).使用FileInputStream对象中的方法read,读取文件。

(3).释放资源。

示例代码:

try {
    FileInputStream fis = new FileInputStream("E:\\iostream\\b.txt");
    //fis.read();//读取文件中的一个字节并返回,读取到文件的末尾返回-1
    int len = 0;
    while ((len = fis.read())!= -1){
        System.out.print((char)len);//循环读取单个字节
    }
    fis.close();
} catch (Exception e) {
    e.printStackTrace();
}

3.文件复制

思想:

(1).创建一个字节输入流对象,构造方法中绑定要读取的数据源。

(2).创建一个字节输出流对象,构造方法中绑定要写入的目的地。

(3).使用字节输入流对象中的方法read读取文件。

(4).使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中。

(5).释放资源。

代码示例:

try {
    FileInputStream fis = new FileInputStream("E:\\iostream\\c.txt");
    FileOutputStream fos = new FileOutputStream("E:\\iostream\\d.txt");
    //一个字符一个字符复制效率比较低
    /*int len;
    while ((len = fis.read())!= -1){
        fos.write((char)len);
    }*/
    //将要读取的内容放到byte数组中缓冲
    byte[] bytes = new byte[1024];
    int len = 0;
    while((len = fis.read(bytes)) != -1){
        fos.write(bytes,0,len);
    }
    fis.close();
    fos.close();
} catch (Exception e) {
    e.printStackTrace();
}

三、FileReader(文件字符输入流)

FileReader extends InputStreamReader extends Reader

把硬盘中文件中的数据以字符的方式读取到内存中。

构造方法:

FileReader(String fileName)

FileReader(File file)

构造方法的作用:

1.创建一个FileReader对象。

2.会把FileReader对象指向要读取的文件。

字符输入流的使用步骤:

1.创建FileReader对象,构造方法中绑定要读取的数据源。

2.使用FileReader对象中的方法read读取文件。

3.释放资源。

代码示例:

try {
    FileReader fr = new FileReader("E:\\filereader.txt");
    int len = 0;
    while((len = fr.read())!=-1){
        System.out.print((char) len);
    }
    fr.close();
} catch (IOException e) {
    e.printStackTrace();
}

四、FileWriter(文件字符输出流)

FileWriter extends OutputStreamWriter extends Writer

把内存中的字符数据写入到文件中

构造方法:

FileWriter (File file)

FileWriter (String name)

构造方法的作用:

1.创建一个FileWriter对象。

2.根据构造方法中传递的文件/文件路径创建文件。

3.把FileWriter对象指向创建好的文件。

字符输出流的使用步骤:

1.创建一个FileWriter对象,构造方法中绑定写入数据的目的地。

2.使用FileWriter中的方法Write,把数据写入到内容缓冲区中(字符转换为字节的过程)。

3.使用FileWriter中的flush,把内存缓冲区中的数据刷新到文件中。

4.释放资源,把内存缓冲区中的数据刷新到文件中。

flush和close的区别:

它们两个都可以把内存缓冲区中的数据刷新到文件中。

flush:刷新缓冲区,流对象可以继续使用。

close:先刷新缓冲区,然后通知系统释放资源,流对象不可以灾被使用。

代码示例:

FileWriter fw = null;
try {
    fw = new FileWriter(new File("E:\\fileWriter"),true);//true可以续写
    char[] crs = {'a','b','c'};
    fw.write(97);
    fw.flush();
    fw.write(crs);
    fw.write("哈哈哈哈哈###");

} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        fw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值