package cn.zhouzhou;

import java.io.FileInputStream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.management.RuntimeErrorException; /*
* 一、流?
* 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
* 即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,
* 方便更直观的进行数据操作。
*二、 字节流?
* 先读后写!
* 1.输出流-------程序到文件------OutputStream类!写
* 1.OutputStream 2.加上代表换行!【\r\n】
*
* 2.输入流-------文件到程序-------InputStream类!读
* a.方法 read() 返回值-1 利用while循环 读取文件!int len=0; 返回值!
*
* b.读取字节数组
* byte b[]=new byte[1024];
* int len=0; while((len=a1.read(b))!=-1);
* System.out.println(new String(b,0,len));
* 三、文件复制?
* 方法:
* 1.用InputStream读取,OutputStream写!
* 2.创建数组缓冲!
* byte b[]=new byte[1024*10];
* int len=0;
* while((len=a1.read(b))!=-1);
* {a2.write(b,0,len)}
*
*
*/
public class OutputStreamDemo {
public static void main(String[] args) throws IOException {
run01();//1.输出流 写!OutputStream write();
run02();//2.输入流 读!InputStream read();
run03();//3.读取字节数组 byte [] b=new byte[1024];
copy();// 4.简单的文件复制 异常抛出!
copy01();//5.利用 try catch解决异常
}
//"E:\\老师的代码\\day20\\视屏\\001.mp4" "d:\\game\\001.mp4"
private static void copy01() {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("E:\\老师的代码\\day20\\视屏\\001.mp4");
fos = new FileOutputStream("d:\\game\\001.mp4");
int len = 0; byte []b=new byte[1024*10000]; //复制速度很快!
while ((len = fis.read(b)) != -1)
{
fos.write(b,0,len);
}
}
catch (IOException ex)
{
System.out.println(ex);
throw new RuntimeException("文件复制失败");
}
finally
{
try
{
if (fos != null)
{
fos.close();
}
}
catch (IOException ex)
{
throw new RuntimeException("释放资源失败");
} finally
{
try
{
if (fis != null)
{
fis.close();
}
}
catch (IOException ex) {
throw new RuntimeException("释放资源失败");
}
}
} }
private static void copy() throws IOException {
//想要复制 先读后写!
FileInputStream a1=null;
FileOutputStream a2=null;
a1=new FileInputStream("E:\\老师的代码\\day25\\视屏\\1.mp4");
a2=new FileOutputStream("d:\\game\\1.mp4"); //定义一个数组,缓冲![1024*10]就够了
byte []b=new byte[1024*10000]; //1024*10000 复制速度很快!我的计算机有些卡顿!
int len=0;
while ((len=a1.read(b))!=-1) {
a2.write(b,0,len);
}
a1.close();
a2.close();
}
private static void run03() throws IOException {
FileInputStream a1=new FileInputStream("d:\\game\\aaa.txt");
//创建字节数组, 一般都是1024 读取速度快!
byte [] b=new byte[1024]; int len=0;
while ((len=a1.read(b))!=-1) {
System.out.println(new String(b,0,len)); //new String(b,0,len);数组byte中 字节从0开始,到len 最后一个!
}
a1.close();
}
private static void run02()throws IOException { FileInputStream a1=new FileInputStream("d:\\game\\hello.txt"); //读取文件aaa.txt.文本内容是中文 有时会有乱码!--->以后解决。 int len=0; //读取一个字节的方法 read() 返回值 int int len=0;实在接受read方法的返回值!
while ((len =a1.read())!=-1) { //a1.read() 赋值给len 当len等于-1时,循环结束!
System.out.print((char)len); //使用循环,读取文件,循环结束的条件 read()方法返回值为-1 } a1.close(); //流 有始有终的!
} public static void run01() throws IOException{
//创建文件! 在 内存中写入到硬盘! OutputStream();
FileOutputStream a1=new FileOutputStream("d:\\game\\aaa.txt");
//在文件aaa.TXT中写入东西。 添加97 在字节中是a。 这种写法一次只能添加一个,慢!
a1.write(97);
//创建字节数组 ,写的就快! 一次传递很多个字节!
byte []bytes={98,99,97};
//(bytes,0,1); 获取bytes数组中,角标从0 到2的元素!注意。取不到角标为2的元素! 有头无尾!
a1.write(bytes, 0, 3); System.out.println("b是"+bytes[0]+" c是"+bytes[1]+" a是"+bytes[2]);
//写入 字符串。不能直接写入,需要先转换成bytes!
a1.write("你好\r\n".getBytes()); // \r\n 换行! a1.write("世界!".getBytes());
a1.close(); //输出流打开后,需要关闭! } }

java 中 的 字节流!的更多相关文章

  1. JAVA中的字节流与字符流

    字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...

  2. java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr

    BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWri ...

  3. Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件

     一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...

  4. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  5. 理解Java中字符流与字节流

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

  6. 理解Java中字符流与字节流的区别(转)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  7. Java中字节流的总结及代码练习

    Java中的字节流 在描述字节流时,先知道什么是流 流可以分为:输入流和输出流 输入流和输出流 示意图: 字节流读取内容:二进制,音频,视频 优缺点:可以保证视频音频无损,效率低,没有缓冲区 字节流可 ...

  8. Java中的IO流(二)

    上一篇<Java中的IO流(一)>把学习IO流的字符流作了一下记录,本篇把字节流记录一下. 一,Java中的字节流 Java中的字节流的操作方式与字符流的操作方式大致相同,连方法名都是类似 ...

  9. Java中常用IO流之文件流的基本使用姿势

    所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ...

随机推荐

  1. Python 中的浅拷贝和深拷贝

    1. 列表和字典,直接赋值,都是浅拷贝,即赋值双方指向同一地址,因为 Python 对可变对象按引用传递. >>> a = [1, 2, 3] >>> b = a ...

  2. 记一次layui弹框关闭问题

    我在博客园记录过layui关于弹框关闭问题,文章为layui关闭弹出层,这次出现了特殊情况,之前是通过layer.closeAll()解决了这个问题,但是这次解决不了.而换成parent.layer. ...

  3. 在.NET Framework中慎用DirectoryInfo.GetFiles方法

    .NET Framework中的DirectoryInfo.GetFiles方法,可以在一个文件夹下通过通配符找出符合条件的文件. 我们首先在文件夹C:\DemoFolder下定义两个文件:demo. ...

  4. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  5. Burp Suite学习之Intruder的4种攻击模式

    burp suit的intruder攻击共有四种模式,如图所示,下面分别讲讲这四种模式的使用方法和场景. 一 .Sniper模式 Sniper模式使用一组payload集合,它一次只使用一个paylo ...

  6. Spring Boot2.0 整合 Kafka

    Kafka 概述 Apache Kafka 是一个分布式流处理平台,用于构建实时的数据管道和流式的应用.它可以让你发布和订阅流式的记录,可以储存流式的记录,并且有较好的容错性,可以在流式记录产生时就进 ...

  7. 微信支付异常:appid and openid not match

    上周调试微信小程序支付时遇到的问题,在调用统一下单接口获取微信支付的相关参数时,报了这么一个错误:appid and openid not match. 字面意思很容易理解,就是appid与openi ...

  8. python爬虫随笔(2)—启动爬虫与xpath

    启动爬虫 在上一节中,我们已经创建好了我们的scrapy项目,看着这一大堆文件,想必很多人都会一脸懵逼,我们应该怎么启动这个爬虫呢? 既然我们采用cmd命令创建了scrapy爬虫,那就得有始有终有逼格 ...

  9. 深度学习之概述(Overview)

    2016年被称为人工智能的元年,2017年是人能智能应用的元年:深度学习技术和应用取得飞速发展:深度学习在互联网教育场景也得到广泛应用.本文主要介绍机器学习及深度学习之定义及基本概念.相关网络结构等. ...

  10. MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等

    Mysql命令添加外键 前提是有这么几个表  以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_ ...