字节流写数据加异常处理、字节流读数据、复制文本文件及复制图片

简介: 字节流写数据加异常处理、字节流读数据、复制文本文件及复制图片的简单示例

 一、字节流写数据加异常处理

异常处理格式

try-catch-finally:

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

image.gif

finally特点:

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

示例代码:

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

image.gif

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

字节输入流:

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

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

● 创建字节输入流对象

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

● 释放资源

示例代码:

public class FileInputStreamDemo01 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象 
        //FileInputStream(String name) 
        FileInputStream fis = new FileInputStream("myByteStream\\fos.txt");
        int by; 
        /* 
            fis.read():读数据 
            by=fis.read():把读取到的数据赋值给by 
            by != -1:判断读取到的数据是否是-1 
        */
        while ((by=fis.read())!=-1) {
            System.out.print((char)by);
        }
        //释放资源 
        fis.close();
    }
}

image.gif

三、字节流复制文本文件

需求:

把“E:\itcast\窗里窗外.txt”复制到模块目录下的“窗里窗外.txt”

实现步骤:

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

数据源:E:\itcast\窗里窗外.txt --- 读数据 --- InputStream --- FileInputStream

目的地:myByteStream\窗里窗外.txt --- 写数据 --- OutputStream --- FileOutputStream

代码实现:

public class CopyTxtDemo {
    public static void main(String[] args) throws IOException {
        //根据数据源创建字节输入流对象 
        FileInputStream fis = new FileInputStream("E:\\itcast\\窗里窗外.txt");
        //根据目的地创建字节输出流对象 
        FileOutputStream fos = new FileOutputStream("myByteStream\\窗里窗外.txt");
        //读写数据,复制文本文件(一次读取一个字节,一次写入一个字节) 
        int by;
        while ((by=fis.read())!=-1) {
            fos.write(by);
        }
        //释放资源 
        fos.close();
        fis.close();
    }
}

image.gif

四、字节流读数据(一次读一个字节数组数据)

一次读一个字节数组的方法:

public int read(byte[] b):从输入流读取最多b.length个字节的数据

返回的是读入缓冲区的总字节数,也就是实际的读取字节个数

示例代码:

public class FileInputStreamDemo02 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象 
        FileInputStream fis = new FileInputStream("myByteStream\\fos.txt"); 
        /* 
            hello\r\n 
            world\r\n 
            第一次:hello 
            第二次:\r\nwor 
            第三次:ld\r\nr 
        */
        byte[] bys = new byte[1024]; //1024及其整数倍 
        int len;
        while ((len=fis.read(bys))!=-1) {
            System.out.print(new String(bys,0,len));
        }
        //释放资源 
        fis.close();
    }
}

image.gif

五、字节流复制图片

案例需求:

把“E:\itcast\mn.jpg”复制到模块目录下的“mn.jpg”

实现步骤:

● 根据数据源创建字节输入流对象

● 根据目的地创建字节输出流对象

● 读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)

● 释放资源

代码实现:

public class CopyJpgDemo {
    public static void main(String[] args) throws IOException {
        //根据数据源创建字节输入流对象 
        FileInputStream fis = new FileInputStream("E:\\itcast\\mn.jpg");
        //根据目的地创建字节输出流对象 
        FileOutputStream fos = new FileOutputStream("myByteStream\\mn.jpg");
        //读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组) 
        byte[] bys = new byte[1024];
        int len;
        while ((len=fis.read(bys))!=-1) {
            fos.write(bys,0,len);
        }
        //释放资源 
        fos.close();
        fis.close();
    }
}

image.gif

目录
相关文章
|
7月前
|
Go
文件写入、追加、读取、复制不是问题
文件写入、追加、读取、复制不是问题
74 0
|
3月前
同步读取文件
同步读取文件
50 0
|
7月前
|
存储 C语言
用二进制方式向文本读写数据
用二进制方式向文本读写数据
45 3
|
7月前
|
存储 JSON Go
纯文本文件的读写操作详解
纯文本文件的读写操作详解
77 0
|
XML C# 数据格式
C#读取写入文件的三种方式
最近对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试,例子在文末,可下载。
93 0
|
Java
Java IO流--使用缓冲流实现非文本文件和文本文件的复制
Java IO流--使用缓冲流实现非文本文件和文本文件的复制
127 0
|
Java
Java字节流有无缓冲流以及读取方式不同的所对应的时间(四种)
Java字节流有无缓冲流以及读取方式不同的所对应的时间(四种)
93 1
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
156 0
|
Java
I/O流常用复制和读写文件
I/O流常用复制和读写文件
125 0
|
Java
字符串、字符流中的编码解码问题、字符流写数据的5种方式、字符流读数据的2种方式及复制Java文件
字符串、字符流中的编码解码问题、字符流写数据的5种方式、字符流读数据的2种方式及复制Java文件的简单示例
143 0
字符串、字符流中的编码解码问题、字符流写数据的5种方式、字符流读数据的2种方式及复制Java文件