什么是字节流

像操作 图片 视频 mp4 文档(里面可能有图片) 等等

注意点

  1. 必须使用try catch finally 来包 不用throws(流是要关闭的 如果中途抛错 throws 无法将流关闭 浪费资源)
  2. UTF-8编码下 一个 中文占3个字节 GB2312编码下 一个中文占2个字节

示例

package day03;

import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; /**
* 对于文本文件(.txt .java .c .cpp) 使用字符流处理
* <p>
* 对于非文本文件(.jpg .mp3 .mp4 .doc .ppt) 使用字节流处理
*/
public class FileInputOutputStream {
/**
* 使用字节流 处理 文本文件 可能出现乱码
* 我� �吴� �� � �吴� �� � �宝� ��我 老� �
* UTF-8编码下 一个 中文占3个字节 GB2312编码下 一个中文占2个字节
*/
@Test
public void testFileInputStream() {
FileInputStream fileInputStream = null;
try {
File file = new File("08_IO\\hello1"); fileInputStream = new FileInputStream(file); byte[] bytes = new byte[5];
int len; while ((len = fileInputStream.read(bytes)) != -1) {
String s = new String(bytes, 0, len);
System.out.print(s + "\t");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (fileInputStream != null) {
fileInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 使用FileInputStream 和 FileOutPutStream 复制文件的操作
*/
@Test
public void testFileInputOutputSream() {
// 定义 输入 输出 对象
FileInputStream fis = null;
FileOutputStream fos = null; try {
// 定义File类对象
File srcFile = new File("08_IO\\16.jpg");
File destFile = new File("08_IO\\16_1.jpg"); // 定义 操作对象
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(destFile); byte[] bytes = new byte[5];
int len;
// 复制图片
while ((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
} } catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流资源
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
} if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} /**
* 指定路径下文件的复制
*/
public void copyFile(String srcPath, String destPath) {
// 定义 输入 输出 对象
FileInputStream fis = null;
FileOutputStream fos = null; try {
// 定义File类对象
File srcFile = new File(srcPath);
File destFile = new File(destPath); // 定义 操作对象
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(destFile); byte[] bytes = new byte[100];
int len;
// 复制图片
while ((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
} } catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流资源
if (fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
} if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} @Test
public void testCopyFile() {
long startTime = System.currentTimeMillis();
copyFile("C:\\Users\\yyll\\Desktop\\1.mp4","C:\\Users\\yyll\\Desktop\\1_1.mp4"); long endTime = System.currentTimeMillis();
System.out.println("复制花费时间==>" + (endTime - startTime)); // 4915
}
}

小结

字节流 总结起来

第一步 创建File对象

  1. new File(String path);
  2. new File(String parent,String child);
  3. new File(File parent,String child)

    常用的三种创建方式

第二步创建流

new FileInputSream(File)

new FileInputSream(String)

第三步读取操作

read方法 write方法

第四步关闭流

一定要放到finally中

IO之字节流的更多相关文章

  1. Java IO: 其他字节流(上)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackInputStream,SequenceInputS ...

  2. [Java IO]02_字节流

    概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...

  3. Java IO之字节流

    Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...

  4. JAVA之IO流(字节流)

    输入和输出 JAVA的流分为输入流和输出流两部分, 输入流:InputStream或者Reader:从文件中读到程序中: 输出流:OutputStream或者Writer:从程序中输出到文件中: Re ...

  5. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  6. [Day23]IO(字节流、字符流)

    1.字节流 1.1 字节输出流OutputStream-抽象类,表示输出字节流的所有类的超类 (1)void close() 关闭此输出流并释放与此流相关的所有系统资源 (2)void flush() ...

  7. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  8. IO 复习字节流字符流拷贝文件

    /* 本地文件 URL 文件拷贝 *//*文本文件拷贝 可以通过 字符流,也可以通过字节流*/ /*二进制文件拷贝 只可以通过字节流*//* 希望这个例子能帮助搞懂 字符流与字节流的区别 */ imp ...

  9. Java——IO类 字节流概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  10. Java之IO流(字节流,字符流)

    IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...

随机推荐

  1. Hibernate之关联关系

    时间:2017-1-20 16:28 --一对多配置1.第一步:创建实体类    *   客户实体    *   订单实体    示例代码:        /**          * 客户实体    ...

  2. MongoDB - 文档之间的关系 + _sort和投影

    1. 文档对象之间的关系 一对一 (one TO one) - 例如: 夫妻 (一个丈夫 对应 一个妻子) - 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系 演示: 首先在 my_ ...

  3. SpringBoot应用中使用AOP记录接口访问日志

    SpringBoot应用中使用AOP记录接口访问日志 本文主要讲述AOP在mall项目中的应用,通过在controller层建一个切面来实现接口访问的统一日志记录. AOP AOP为Aspect Or ...

  4. 使用什么快捷键,关闭、打开、最小化qq聊天窗口

    Alt+F4或者Alt+C关闭聊天窗口.Alt+空格+N 最小化聊天窗口.Alt+H 打开聊天记录,打开聊天窗口没有快捷键,必须点击qq好友图标

  5. 关闭Redis服务

    方式1: 方式2:

  6. 即时通讯网-TCPIP族关系图

  7. K8S 简介

    K8S架构与组件 kubectl: 是一个客户端管理工具,直接管理API server,提供请求给API server,中间有auth认证.用户使用kubectl命令来请求API Server接口完成 ...

  8. SQL-DELETE触发器练习

    &练习一 如下所示三张表( student,grade,student_updata_before ): student表 grade表 Student_update_before表 # 触发 ...

  9. DOM对象入门

    1.概念 2.script最好是放在后面,等html的文档内容加载完毕,不然获取不到 3.事件基本操作 第一种绑定事件html和js耦合度高,用第二种 4.灯开关事件使用

  10. msf宏钓鱼

    kali下载python脚本,生成rtf文件: 下载脚本:git clone https://github.com/bhdresh/CVE-2017-8759.git 生成rtf文件: python ...