(IO流类示例二)OutputStream、InputStream

1.IO:Input/Output
  输入:读操作,将磁盘上的内容读取到程序中
  输出:写操作,将程序中的内容写到磁盘上,在流进行读写文件的时候,便于文件开通了一条管道,所以在使用完流之后要将流关闭(也就是将管道关闭)

2.IO的分类:
    1)按流向分:
        输入流和输出流
    2)按单位分:
        字节流和字符流
    3)按功能分:
        高级流和低级流

3.字节输入输出流InputStream(输入流)和OutputStream(输出流):字节输入输出流(抽象类、字节输入输出流的顶级父类)

4.FileOutputStream方法:

    ①FileOutputStream(File file):FileOutputStream构造方法,参数为File对象,如果文件不存在,系统会自动创建一个新的文件

    ②FileOutputStream(String name):FileOutputStream构造方法,参数为文件名,除绝对地址外,.或者只写文件名均表示在当前工作空间中创建文件

    ③FileOutputStream(String name,boolean append):FileOutputStream构造方法,参数为文件名与一布尔值,表示当写入内容时是否覆盖文件写入之前内容,如果为true则不覆盖,false为覆盖

    ④FileOutputStream(File file,boolean append):FileOutputStream构造方法,参数为File对象与一布尔值

    ⑤void write(int b):向文件内写入,参数为int值,文件中显示的为ASCII码所对应的字符,且该方法输入以字节为单位,每次输入一个字节,int值为32为四字节,但是write为单字节输入,即每次输入八位,所以输入值为int值的32位二进制数的低八位。

    ⑥void write(byte[] b):向文件内写入,参数为字节数组,可向目标文件中同时写入多个字节

    ⑦void write(byte[] b,int off,int len):向文件内写入,参数为字节数组,两个int值,off表示从字节数组的哪一位开始,len表示向目标文件内输入的字节数组的长度

    ⑧void close():关闭流

5.FileInputStream方法:

    ①FileInputStream(File file):FileInputStream构造方法,参数为File对象

    ②FileInputStream(String name):FileInputStream构造方法,参数为文件名

    ③int read():读文件内容,该方法以字节为单位读出,每次读出一个字节,如果已经读到该文件的末尾,则读方法返回-1

    ④int read(byte[] b):读文件内容,参数为字节数组,可同时读出多个字节,如果文件的字节数大于1024,那么该方法的返回值就是1024,如果文件的字节数小于1024,那么该方法的返回值就是文件的实际大小

    ⑤int read(byte[] b,int off,int len):读文件内容,参数为字节数组,两个int值,off表示从字节数组的哪一位开始,len表示从目标文件内读出的字节数组的长度

    ⑥void close():关闭流

例一:

                        ①

                        import java.io.FileOutputStream;
                        import java.io.IOException;
                        public class FileOutputStreamDemo1 {
                            public static void main(String[] args) throws IOException {
                                FileOutputStream fos=new FileOutputStream("b.txt");
                                fos.write(65);
                                fos.close();
                            }
                        }

                        结果:

                        ②将文件内容读出

                        import java.io.FileInputStream;
                        import java.io.FileNotFoundException;
                        import java.io.IOException;
                        public class FileInputStreamDemo1 {
                            public static void main(String[] args) throws IOException {
                                FileInputStream fis=new FileInputStream("b.txt");
                                int a=fis.read();
                                System.out.println(a);
                                fis.close();
                            }
                        }

                        结果:65

例二:

                        ①将260写入到文件中(>>右移符号,<<左移符号,|或运算符号)

                        import java.io.FileInputStream;
                        import java.io.FileNotFoundException;
                        import java.io.IOException;
                        public class FileInputStreamDemo2 {
                            public static void main(String[] args) throws IOException {
                                FileOutputStream fos=new FileOutputStream("a.txt");
                                int a=260;
                                int b=a>>8;
                                //00000000 00000000 00000000 00000001
                                fos.write(b);
                                //00000000 00000000 00000001 00000100
                                fos.write(a);
                                fos.close();
                            }
                        }

                        结果:

                        ②将读出260

                        import java.io.FileInputStream;
                        import java.io.FileNotFoundException;
                        import java.io.IOException;
                        public class FileInputStreamDemo1 {
                            public static void main(String[] args) throws IOException {
                                FileInputStream fis=new FileInputStream("a.txt");
                                int m=fis.read()<<8|fis.read();
                                System.out.println(m);
                                fis.close();
                            }
                        }

                        结果:260

例三:

                        ①将int最大值写入

                        import java.io.FileNotFoundException;
                        import java.io.FileOutputStream;
                        import java.io.IOException;
                        public class FileOutputStreamDemo3 {
                            public static void main(String[] args) {
                                FileOutputStream fos=null;
                                try {
                                    fos=new FileOutputStream("a.txt");
                                    int a=Integer.MAX_VALUE;
                                    int b=a>>8;
                                    int c=b>>8;
                                    int d=c>>8;
                                    fos.write(d);
                                    fos.write(c);
                                    fos.write(b);
                                    fos.write(a);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }finally {
                                    try {
                                        fos.close();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                        }

                        结果:,由于为空白字符,所以用鼠标选中来体现

                        ②读出文件内容

                        import java.io.FileInputStream;
                        import java.io.FileNotFoundException;
                        import java.io.IOException;
                        public class FileInputStreamDemo3 {
                            public static void main(String[] args) {
                                FileInputStream fis=null;
                                try {
                                    fis=new FileInputStream("a.txt");
                                    int m=fis.read()<<24|fis.read()<<16|fis.read()<<8|fis.read();
                                    System.out.println(m);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }finally {
                                    try {
                                        fis.close();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                        结果:2147483647

例四:

                        ①一次性写入一个字节数组

                        import java.io.FileNotFoundException;
                        import java.io.FileOutputStream;
                        import java.io.IOException;
                        public class FileOutputStreamDemo4 {
                            public static void main(String[] args) {
                                FileOutputStream fos=null;
                                try {
                                    fos=new FileOutputStream("a.txt");
                                    String str="大家好";
                                    fos.write(str.getBytes());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }finally {
                                    if(fos!=null) {
                                        try {
                                            fos.close();
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }
                        }

                        结果:,String类中提供将字符串变为字节数组方法getBytes()

                        ②读出文件内容

                        import java.io.FileInputStream;
                        import java.io.FileNotFoundException;
                        import java.io.IOException;
                        public class FileInputStreamDemo4 {
                            public static void main(String[] args) {
                                FileInputStream fis=null;
                                try {
                                    fis=new FileInputStream("a.txt");
                                    byte[] bs=new byte[1024];
                                    int len=fis.read(bs);
                                    String str=new String(bs,0,len);
                                    System.out.println(str);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }finally {
                                    if(fis!=null) {
                                        try {
                                            fis.close();
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }
                        }

                        结果:大家好,String有一构造方法为String(byte[] bytes,int offset,int length),可将字节数组转换为字符串,offset为开始位置,length为转换长度即转换多少字节

例五:用FileOutputStream和FileInputStream复制文件

                       

                       

                        import java.io.FileInputStream;
                        import java.io.FileOutputStream;
                        import java.io.IOException;
                        public class FileCopy {
                            public static void main(String[] args) {
                                FileInputStream fis=null;
                                FileOutputStream fos=null;
                                try {
                                    fis=new FileInputStream("Copy.txt");
                                    fos=new FileOutputStream("Copy1.txt");
                                    byte[] bs=new byte[1024*10];
                                    int len=0;//用来存放实际读到的字节数
                                    while((len=fis.read(bs))>0) {
                                        fos.write(bs,0,len);
                                    }
                                }catch(Exception 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();
                                        }
                                    }
                                }
                            }
                        }

                        结果:

                       

                       

总结:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值