• Java数据流


    ---恢复内容开始---

    定义

    在JAVA.IO中可以找到文档

    一串数据像河流一样,先进先出的方式通过

    输入流:读操作;

    输出流:写操作;

    File类的使用

    package com.jiedada.fil;
    
    import java.io.File;
    import java.io.IOException;
    
    public class lif {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //创建File
            File file=new File("f:\qq\qq");
            System.out.println("是不是目录:"+file.isDirectory());
            System.out.println("是不是文件:"+file.isFile());
            //添加目录
            File file1=new File("f:\qq\qq\qq","HashSet");
            if(!file1.exists())
            {
                file1.mkdirs();
            }
            File file2=new File("f:\qq\qq1");
            //添加文件
            if(!file2.exists())
            {
                try {
                    file2.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
        }
    
    }
    View Code

    file是文件的意思

    字节流

    FileInputSteam读取文件,视频等等0 1序列的输入常用方法

    每次都要释放出系统占有的资源

    对象。close方法;

    package com.jiedada.fil;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    public class FileInouteStea {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            File file=new File("f:\qq\qq\qq.txt");
            try {
                FileInputStream filein=new FileInputStream(file);
                //输出的几种方式
                /*    int n=filein.read();
                    while(n!=-1) {
                        System.out.print((char)n);
                        n=filein.read();
                    }*/
                //第二种
                /*int n=0;
                while((n=filein.read())!=-1)
                {
                    System.out.print((char)n);
                }*/
                //第三种
                byte b[]=new byte[100];
                filein.read(b, 0, 5);
                System.out.print(new String(b));
                filein.close();
                
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch(IOException e) {
                e.printStackTrace();
            }
            
    
        }
    
    }
    View Code

    输入输出流的方法

    package com.jiedada.fil;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class rw {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //定义输入输出流
            try {
                FileInputStream fis=new FileInputStream("f:\qq\read\pulpit.jpg");
                FileOutputStream fos=new FileOutputStream("f:\qq\read\otherpulpit.jpg");
                int n=0;
                byte b[]=new byte[1024];
                if((n=fis.read(b))!=-1) {
                    //读入相同大小的图片
                    fos.write(b,0,n);
                }
                //必须执行
                fis.close();
                fos.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //这个判定也很重要
            catch(IOException e) {
                e.printStackTrace();
            }
    
        }
    
    }
    View Code

    缓冲流

    因为在硬盘中读写的速度太慢了所以我们需要增加程序的数度需要用到

    BUfferedInputSteam

    BufferedOutputSteam

    package com.jiedada.fil;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.BufferOverflowException;
    
    public class sad {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                FileInputStream fis=new FileInputStream("f:\qq\qq\qq.txt");
                BufferedInputStream bis=new BufferedInputStream(fis);
                FileOutputStream fos=new FileOutputStream("f:\qq\qq\qq.txt");
                BufferedOutputStream bos=new BufferedOutputStream(fos);
                long start=System.currentTimeMillis();
                  bos.write(10);
                bos.write('a');
                //如果没有这样的语句就无法显示在文件中,而是放在其他位置
                bos.flush();
                System.out.println(bis.read());
                System.out.println((char)bis.read());
                long end =System.currentTimeMillis();
                System.out.println(end-start);
                //必须写入
                bos.close();
                fos.close();
                bis.close();
                fis.close();
            
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch(IOException e) {
                e.printStackTrace();
            }
    
        }
    
    }
    View Code

    字符流

    和字节流基本差不多

    package com.jiedada.fil;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class StringFile {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                FileInputStream fis=new FileInputStream("f:\qq\qq\qq.txt");
                InputStreamReader isd=new InputStreamReader(fis);
                BufferedReader br=new BufferedReader(isd);
                FileOutputStream fos=new FileOutputStream("f:\qq\qq\qq1.txt");
                OutputStreamWriter osw=new OutputStreamWriter(fos);
                BufferedWriter bw=new BufferedWriter(osw);
                int n=0;
                char c[]=new char[10];
                /*while((n=isd.read())!=-1) {
                    System.out.print((char)n);
                }*/
                while((n=br.read(c))!=-1) {
                    osw.write(c,0,n);
                    
                    osw.flush();
                }
                fis.close();
                isd.close();
                fos.close();
                osw.close();
                br.close();
                bw.close();
                
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch(IOException e) {
                e.printStackTrace();
            }
    
        }
    
    }
    View Code

     几个必须,和其中的逻辑关系不要混淆了;

    对象的序列化与反序列化

    当发送的内容多种多样的时候比如端口什么等等,我们需要发送一个类,这样通过解析我们就能获得我们想要的内容了

    需要继承Serializable接口

    类的创建

    package com.jiedada.fil;
    
    import java.io.Serializable;
    
    public class Goods implements Serializable{
         private String id;
         private String name;
         private int price;
         public Goods() {
             
         }
        public Goods(String id, String name, int price) {
            super();
            this.id = id;
            this.name = name;
            this.price = price;
        }
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
        @Override
        public String toString() {
            return "Goods [id=" + id + ", name=" + name + ", price=" + price + "]";
        }
            
        
    }
    View Code

    测试类的创建

    package com.jiedada.fil;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    public class GoodsTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //定义一个类
            Goods goods=new Goods("s001","diannao",3000);
            //写出数据
            FileOutputStream fos;
            try {
                fos = new FileOutputStream("f:\qq\qq\qq.txt");
                ObjectOutputStream oos=new ObjectOutputStream(fos);
                //读入数据
                FileInputStream fis=new FileInputStream("f:\qq\qq\qq.txt");
                ObjectInputStream ois=new ObjectInputStream(fis);
                oos.writeObject(goods);
                oos.writeBoolean(true);
                oos.flush();
                System.out.println(ois.readBoolean());
                try {
                    Goods goods1=(Goods)ois.readObject();
                    System.out.println(goods1);
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                fis.close();
                fos.close();
                oos.close();
                ois.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch(IOException e) {
                e.printStackTrace();
            }
            
            
            
    
        }
    
    }
    View Code

    ---恢复内容结束---

  • 相关阅读:
    基于Adaboost的人脸检测算法
    操作系统笔试题及答案
    eclipse Maven plugin 配置
    网站服务管理系统系列教程之五
    2017第4周日
    2017春节~人生智慧箴言
    2017年初夕
    2017农历二十九
    王国维收藏真伪
    2017第3周二假期里该做的事
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/10765536.html
Copyright © 2020-2023  润新知