设为首页 加入收藏

TOP

java--IO流 ? 字节流(二)
2023-07-25 21:31:35 】 浏览:35
Tags:java--IO
quot;97")); //写数据 for (int i = 0; i < 10; i++) { fos.write("hello".getBytes()); fos.write("\r\n".getBytes()); // 添加换行, write 方法是追加 } //释放资源 fos.close(); } }

字节流写数据加异常处理

  • 异常处理格式

    • try-catch-finally

       

       

      try{
          // 可能出现异常的代码;
          }catch(异常类名 变量名){
          // 异常的处理代码;
      }finally{
          // 执行所有清除操作;
      }
    • finally特点

      • 被finally控制的语句一定会执行,除非JVM退出

import java.io.IOException

public class FileOutputStreamDemo04 {
    public static void main(String[] args) {
        //加入finally来实现释放资源
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("java\\fos.txt");
            fos.write("hello".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

字节流读数据(一次读一个字节数据)

  • 字节输入流

    • FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名

  • 字节输入流读取数据的步骤

    • 创建字节输入流对象

    • 调用字节输入流对象的读数据方法

    • 释放资源

package io_bytetheflow;

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamDemo01 {
    public static void main(String[] args) throws IOException {
        // 创建字节输入流对象
        // FileInputStream(String name)
        FileInputStream fis = new FileInputStream("java-studydemo\\fos.txt");

        int by;
        /*
            fis.read():读数据
            by=fis.read():把读取到的数据赋值给by
            read()  从这个输入流读取一个字节的数据。返回int类型
            by != -1:判断读取到的数据是否是-1

         */
        System.out.println(fis.read()); // 返回int类型的字节码
        while ((by=fis.read())!=-1) {  // 当取到int类型的字节码,但没有字符的字节码,会返回-1,此时则退出
            System.out.print((char)by);
        }

        //释放资源
        fis.close();
    }
}

字节流复制文件

  • 案例需求

    把“E:\java\demo.txt”复制到模块目录下的“demo.txt”

  • 实现步骤

    • 复制文本文件,其实就把文本文件的内容从一个文件中读取出来(数据源),然后写入到另一个文件中(目的地)

    • 数据源:

      “E:\java\demo.txt”--- 读数据 --- InputStream --- FileInputStream

    • 目的地:

      “E:\java1\demo.txt” --- 写数据 --- OutputStream --- FileOutputStream

 

package io_bytetheflow;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class FileInputStreamDemo02 {
    public static void main(String[] args) throws IOException {
        // 创建目录文件
        File fl1 = new File("E:\\java");
        System.out.println(fl1.mkdir());
        File fl2 = new File("E:\\java\\demo.txt");
        System.out.println(fl2.createNewFile());

        File fl3 = new File("E:\\java1");
        System.out.println(fl3.mkdir());
        File fl4 = new File("E:\\java1\\demo.txt");
        System.out.println(fl4.createNewFile());
        //根据数据源创建字节输入流对象  读数据的流read()
        FileInputStream fis = new FileInputStream("E:\\java\\demo.txt");
        FileOutputStream fos1 = new FileOutputStream("E:\\java\\demo.txt");
        byte[] b = "qwertyui".getBytes(StandardCharsets.UTF_8);
        fos1.write(b);
        //根据目的地创建字节输出流对象  写数据的流write()
        FileOutputStream fos = new FileOutputStream("E:\\java1\\demo.txt");

        //读写数据,复制文本文件(一次读取一个字节,一次写入一个字节)
        int by;
        while ((by = fis.read()) != -1) {
            fos.write(by);
        }

        //释放资源
        System.out.println("写入成功!!");
        fos.close();
        fis.close();
    }


}
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java中生成二维码 下一篇JDK8到JDK17有哪些吸引人的新特性..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目