菜鸟笔记
提升您的技术认知

inputstream-ag真人游戏

/*
        在java中inputstream是字节输入流,用来将文件中的数据读取到java程序中。
        inputstream是所有字节输入流的顶层父类,是一个抽象类。如果要用,需要使用子类。
        最常用的子类:fileinputstream。
        构造方法:
        fileinputstream​(file file): 传递一个file类型的文件
        fileinputstream​(string name): 传递一个string类型的文件路径
        其他方法:
        int read​(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1.
        int read​(byte[] b): 一次读取一个字节数组,输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1.
        void close​()
        使用步骤:
        1. 创建一个fileinputstream流对象,绑定一个数据源文件。
        2. 调用read方法读取数据。
        3. 释放资源
        注意: 这种方式不能读取中文,一个中文占多个字节,此时一次读取一个字节会把中文拆开读。
        */
public class demo01inputstream {
    public static void main(string[] args) throws ioexception {
        //创建一个fileinputstream对象,并绑定一个数据源文件
        // 如果文件不存在,则会抛出异常(file not fount excep)
        fileinputstream fis = new fileinputstream("e:\\masm5\\aaa.txt");
        //调用read方法读取数据
        // int read​(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1.
        int i;
        while ((i = fis.read()) != -1) {
           /*
                条件做了下面的事情
                1. 通过fis输入流调用read方法,读取一个字节。
                2. 把读取到的这个字节赋值给变量i。
                3. 判断i是否不等于-1,如果不是-1表示读取到了内容,就在循环中对读取到的内容进行处理。
                读取到的内容在i里面保存*/
            system.out.print((char) i);
        }
        //释放资源demo02_inputsteam
    }
}
        使用字节输入流一次读取一个字节数组。
        int read​(byte[] b): 一次读取一个字节数组,
        输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1.
        这种读取方式效率高
        */
public class demo02inputstream {
    public static void main(string[] args) throws ioexception {
        //创建fileinptstream 流对象,并绑定源文件
        fileinputstream fis=new fileinputstream("e:\\masm5\\aaa.txt");
        //调用read方法读取数据.
        //        // int read​(byte[] b): 一次读取一个字节数组
        // 会将数据读取到字节数组里面。 字节数组长度是几,那么就最多一次读取几个。 并
        // 且返回读取到的个数,读取结束,返回-1
        //
        //        //使用循环,一次读取一个字节数组
        //        //定义一个字节数组,用来保存读取到的数据。
        byte arr[]=new byte[3];
        //定义一个变量来保存读到的个数
        int len;//返回读取到的个数
        //使用循环开始读取
        while((len=fis.read(arr))!=-1){
            /*
            上面条件作了下面的事情:
            1. 通过字节输入流fis调用read方法,将数据读取到arr这个字节数组中
            2. 将读取到的有效个数返回,赋值给len。
            3. 判断len是否不等于-1,如果不等于-1,表示读取到了内容,就就在循环中进行处理.
                    读取出来的数组在barr数组中放着
                    */
            //最后一次读取可能会有上次残留的数据,所以不能把字节数组的整体都转成string
            //system.out.println(new string(barr));
            //读取到了几个内容,就把字节数组的几个元素转成字符串,并且打印
            system.out.println(new string(arr,0,len));
        }
    }
}
   文件复制。
    文件复制其实就是一边读,一边写,每读取一次就把读取到的内容写到文件中。
    为了保证复制效率,我们采用一次读取一个字节数组的方式进行复制
    思路:
        1. 创建字节输入流对象,用来读取
        2. 创建字节输出流对象,用来写入。
        3. 开始读取,一次读取一个字节数组。
        4. 把读取到的字节数组的内容写入到目的地文件
        5. 循环 第3步 和 第4步
        6. 释放资源
 */
public class demo03copy {
    public static void main(string[] args) throws ioexception {
        //1. 创建字节输入流对象,用来读取
        fileinputstream fis = new fileinputstream("e:\\masm5\\aa.jpg");
        //2创建字节输出流对象,用来写入//没有会创建
        fileoutputstream fs = new fileoutputstream("zhongguo");
        //3创建一个数组用来读取
        byte arr[] = new byte[1024 * 8];
        int len;//用来计数
        while ((len = fis.read(arr)) != -1) {
            //从文件中用字节数组读取数组,存储到字节数组中
//            每读取到一个内容,就把读取到的内容写入到目的地文件
            fs.write(arr,0,len);
        }
        //释放资源
        fs.close();
        fis.close();
    }
}

 

 

 

网站地图