zoukankan      html  css  js  c++  java
  • java 中 的 字节流!

    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.加上代表换行!【
    】
     * 
     * 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("你好
    ".getBytes());                                        //  
       换行!
                                                                                
            a1.write("世界!".getBytes());
            a1.close();                                                            //输出流打开后,需要关闭!
            
        }
        
    }
  • 相关阅读:
    高性能分布式计算与存储系统设计概要
    .NET核心代码保护策略
    Web 通信 之 长连接、长轮询(long polling)
    C++数据结构之二叉查找树(BST)
    T4:T4 笔记 + Trait 示例
    腾讯2014软件开发
    CSS选择器从右向左的匹配规则
    Js面向对象编程
    Js杂谈-正则的测试与回溯次数
    Microsoft Message Analyzer (微软消息分析器,“网络抓包工具
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10596271.html
Copyright © 2011-2022 走看看