ruijiege

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

定义

 

在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

 

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

posted on 2019-04-25 06:34  哦哟这个怎么搞  阅读(1244)  评论(0编辑  收藏  举报