---恢复内容开始---
定义
在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(); } } } }
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(); } } }
输入输出流的方法
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(); } } }
缓冲流
因为在硬盘中读写的速度太慢了所以我们需要增加程序的数度需要用到
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(); } } }
字符流
和字节流基本差不多
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(); } } }
几个必须,和其中的逻辑关系不要混淆了;
对象的序列化与反序列化
当发送的内容多种多样的时候比如端口什么等等,我们需要发送一个类,这样通过解析我们就能获得我们想要的内容了
需要继承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 + "]"; } }
测试类的创建
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(); } } }
---恢复内容结束---