Java学习笔记之IO(三):OutputStream输出字节流

来源:互联网 发布:js添加dom resize事件 编辑:程序博客网 时间:2024/06/05 08:36
package com.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.junit.Test;/*输出字节流:--------| OutputStream:是所有输出字节流的父类;抽象类;-----------| FileOutputStream:向文件写入数据的输出字节流;FileOutputStream使用步骤:1、找到目标文件;2、建立数据的输出通道;3、把数据转换成字节数组写出;4、关闭资源;FileOutputStream要注意的细节:1、创建FileOutputStream输出流对象的时候,如果目标文件不存在,会自动创建目标文件;2、创建FileOutputStream输出流对象的时候,如果目标文件已经存在,会清除目标文件中的所有数据;3、创建FileOutputStream输出流对象的时候,如果目标文件已经存在,并且需要向目标文件中追加数据的时候,需要使用new FileOutputStream(file, true)构造函数,第二个参数为true表示追加写入;4、使用write(int b)方法写数据的时候,虽然接收的是一个int类型的数据,但是真正写出的只是一个字节的数据,一个字节八位,只是把低八位的二进制数据写出,其他二十四位的数据全部丢弃;00000000-01110000-00001100-00011100byte一个字节;short两个字节;int四个字节;long八个字节; */public class Demo4 {// 将数据写出到文件中@Testpublic void test1() throws Exception{// 1、找到目标文件;File file = new File("D:\\a.txt");// 2、建立数据的输出通道;FileOutputStream out = new FileOutputStream(file);String content = "Hello World";// 3、把数据转换成字节数组并写出;out.write(content.getBytes());// 4、关闭输出流,释放资源out.close();}// 写出指定长度的数据到文件中@Testpublic void test2() throws IOException {// 找到目标文件File file = new File("D:\\a.txt");// 建立数据的输出通道FileOutputStream out = new FileOutputStream(file);String content = "Hello World";// 将数据转换成字节数组byte[] buf = content.getBytes();// 写出指定长度的数据;参数2表示从索引值为0的位置开始写出,参数3表示写出多少个字节;out.write(buf, 0, 5);// 关闭资源out.close();}// 拷贝图片@Testpublic void test3() throws IOException{// 找到目标文件File srcFile = new File("D:\\photos\\11.jpg");File descFile = new File("D:\\11.jpg");// 建立数据的输入输出通道FileInputStream in = new FileInputStream(srcFile);FileOutputStream out = new FileOutputStream(descFile);// 创建一个字节缓冲数组,存储读取到的内容;byte[] buf = new byte[1024];int len = 0;// 边读边写:先用输入流读取数据,然后再将读取到的数据写出到目标文件中;while ((len = in.read(buf)) != -1){out.write(buf, 0, len);}// 关闭资源;原则:先开后关,后开先关;out.close();in.close();}}

 

package com.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * IO流的异常处理 */public class Demo5 {public static void main(String[] args) {copyImage();}// 拷贝图片的异常处理public static void copyImage(){FileInputStream in = null;FileOutputStream out = null;// 找到目标文件File inFile = new File("D:\\photos\\11.jpg");File outFile = new File("D:\\11.jpg");try{// 创建输入输出通道in = new FileInputStream(inFile);out = new FileOutputStream(outFile);// 边读边写int len = 0;byte[] buf = new byte[1024];while ((len = in.read(buf)) != -1){out.write(buf, 0, len);}}catch(IOException e){System.out.println("拷贝图片失败。。。");throw new RuntimeException(e);}finally {try {if (out != null){out.close();System.out.println("关闭输出流成功。。。");}} catch (IOException e) {System.out.println("关闭输出流失败。。。");throw new RuntimeException(e);}finally {if (in != null){try {in.close();System.out.println("关闭输入流成功。。。");} catch (IOException e) {System.out.println("关闭输入流失败。。。");throw new RuntimeException(e);}}}}}}


阅读全文
0 0
原创粉丝点击