什么是字节流

像操作 图片 视频 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. android Handler消息通信

    1 package com.example.testhandler; 2 3 import android.os.Bundle; 4 import android.os.Handler; 5 impo ...

  2. Qt之类反射机制

    在java语言中,可以使用getObject(String)函数,从类型直接构建新的对象. 而在C++中是没有这种机制的,Qt虽然提供了元对象机制,但只可以获取对象的类名,不能反向构建. 所以搜索一下 ...

  3. Final Cut Pro X 10.4.7 修改长宽比, 截取某一段视频导出

    新建项目时设置过长宽比例,现在要修改 窗口 - 项目属性 - 修改 - 自定义 要注意的是,导出时也要选择一下比例 截取某一段视频导出 将鼠标移到你要截取的片段的开始处,点击快捷键 i(标记-设定范围 ...

  4. JS 根据id实现局部打印

    // 打印初审收费清单     getOrderCostBille(){       var head_str = "<html><head><title> ...

  5. IT人计算机网络浅析

    LAN: 局域网 local Area Network WAN: 广域网 Wide Area Network WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN OSI 七层协议 ...

  6. 关联数组VS索引数组

    关联数组和常规说的数组类似,它包含标量抄数据,可用索引值来单独选择这些数据,和常规数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量袭.这些标量称为百Keys,可以在以后用于检索数组中的数值 ...

  7. django框架开发流程

    python开发没有按目录划分,不像其它语言要先建一个包文件,所以python有必要先新建一个虚拟环境.这样不同的项目所依赖的环境和插件互不影响.虚拟环境的方法很多,这儿先用   virtualenv ...

  8. pyhton锁机制,进程池

    第一,进程锁,本来进程是各自的,本不要加锁,但是在屏幕上输出打印时为了防止混乱,在进程模块有一个锁函数,使用如下,需要说明是在py3以上版本没 有出现在过屏幕输出混乱,可以不加,这方法不重要,但是作为 ...

  9. Javascript 判断 iframe 中的变量是否为对象

    Javascript 判断 iframe 中的变量是否为对象 前言 公司之前的项目中,为了实现模块化,在 web 后端使用了 iframe 来组织框架和页面.由于当时没有很好地规划,iframe 子页 ...

  10. .NET 中的HTTP 3支持

    dotnet团队官方博客发布了一篇HTTP3的文章:HTTP/3 support in .NET 6.文章介绍了.NET 6 将预览支持HTTP3,.NET 7正式支持HTTP3,原因主要是HTTP/ ...