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. ③---Java项目管理工具MAVEN安装与配置

    Java项目管理工具MAVEN安装配置以下将为大家介绍Java项目管理工具MAVEN安装及其配置. 一.下载MAVEN安装文件 maven下载地址:https://maven.apache.org/d ...

  2. node.js服务端程序在Linux上持久运行

    如果要想在服务端部署node.js程序,让其持久化运行,就不能单单使用npm start命令运行,当然了,这样运行是毫无问题的,但是当关闭xshell窗口或者是关闭进程的时候(其实关闭xshell窗口 ...

  3. 20175310 MyCP(课下作业,必做)

    一.作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内 ...

  4. Linux IO性能分析blktrace/blk跟踪器

    关键词:blktrace.blk tracer.blkparse.block traceevents.BIO. 本章只做一个记录,关于优化Block层IO性能方法工具. 对Block层没有详细分析,对 ...

  5. hibernate 解决 org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

    这是因为没有设置要更新的主键导致的,只要设置了要更新的主键就能更新成功(没有主键当然不能更新)

  6. 消息队列工具类(MSMQ)

    所要做的是简化msmq的调用代码以及做到可替代性,实现后,调用消息队列代码变为如下所示: QueueService srv = QueueService.Instance(); //检查存储DTO1的 ...

  7. python中join()函数的使用方法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:    join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字 ...

  8. go项目

    1.循环使用缓存 每条日志需要开辟缓存块来存储内容,以减少频繁的内存分配与回收.日志结构体定义如下: type MLogger struct { // freeList is a list of by ...

  9. 2198: 小P当志愿者送餐

    题目描述 在ICPC程序设计大赛期间,小P作为志愿者的任务是给各个学校送盒饭,小P一次最多可以携带M份盒饭.总共有N个学校来参加比赛,这N个学校的休息点在一条笔直的马路边一字排开,路的一头是小P取盒饭 ...

  10. iRate---一个跳转AppStore评分弹窗

    https://www.aliyun.com/jiaocheng/357479.html 摘要:gitHub地址:https://github.com/nicklockwood/iRate可以通过配置 ...