IO

创建文件

File类

  • exists():判断是否存在该文件

  • createNewFile():创建新的文件

  • mkdir():创建文件夹

  • mkdirs():创建多层文件夹

  • isFile():判断是否是文件

  • getPath():获取文件相对路径

  • getAbsolutePath():获取文件绝对路径

  • getName():获取文件名

  • length():获取文件大小(字节)

//创建文件对象  通过路径
File file = new File("d:/test.txt");
// 会报异常,必须做出处理
try{
    if(!file.exists){//判断文件是否存在
        file.createNewFile();//不存在创建新文件
    }
}catch(IOException e){
    e.printStackTrace();
}
​
File file2 = new File("D:Student/stu/c");​
file2.mkdir();//只能创建单层文件夹
file2.mkdirs();//能够创建多层文件夹

IO流

io流体系.jpg

流不释放资源的话会使数据在内存中,文件并不会有改动,一定要关闭流释放资源

输入

方法

  • read():读取文件内容

  • close():关闭流,释放资源

  • 读取文件内容

    • InputStream输入字节流:处理文件
 FileInputStream file = null;
 try{
      //创建输入流的对象 读取的文件是谁
      FileInputStream file = new FileInputStream("text.txt");
      int b= 0;
      while(b=file.read!=-1){//read()返回ASCII表的编码
          System.out.println((char)b);//强转成字符
      }
 }catch(FileNotFoundException e){
      e.printStackTrace();
 }catch(IOException e){
      e.printStackTrace();
 }finally{
      try{
          file.close();//关闭流,释放资源,如果多个流对象,先用的后释放
      }catch(IOExption e){
          e.printStackTrace();
      }
 }
 ​
*   **Reader输入字符流**:处理文本

``` java
try{
     fr = new FileReader("D:/test.txt");
     char[] ch = new char[100];
     int len = fr.read(ch);
     String s = new String(ch, 0, len);
     Sysout.out.println(s);
}catch(IOException e){
     e.printStackTrace();
}finally{
     try{
         fr.close();
     }catch(IOException e){
         e.printStackTrace();
     }
}

    缓冲流

  ```java
    try{
         //构造方法需要一个Reader类的输入流
         br = new BufferedReader(new FileReader("D:/我的青春我做主.txt"));
         String s="";
         StringBuilder sb = new StringBuilder();
         while((s=br.readLine())!=null){
             sb.append(s+"\n");
         }
     //StringBuilder类中的替换方法是根据索引来替换,String类中有更好用的replace方法,所以使用toString方法转换成String类型
         s=sb.toString().replace("###","sss");
         System.out.println(s);
    }catch(FileNotException e){
         e.printStackTrace();
    }catch(IOException e){
         e.printStackTrace();
    }finally{
         try{
             br.close();
         }catch(IOException e){
             e.printStackTrace();
         }
    }

输出

方法

  • write():写入文件内容

  • close():关闭流,释放资源

  • 写入文件内容

    • OuputStream输出字节流:处理文件
   try {
       //第二个参数默认false,重写文件内容,true是追加到其后
       fileOutputStream = new FileOutputStream("test.txt",true);
       String s = "国庆小长假";
       fileOutputStream.write(s.getBytes());//把字符串转化为字节数组的类型,会重写文件内容
   } catch (FileNotFoundException e) {
       e.printStackTrace();
   } catch (IOException e) {
       e.printStackTrace();
   }finally {
       try {
           fileOutputStream.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
  • Writer输出字符流:处理文本

    • flush():将内存中的数据刷新到文件中去
  try{
         fw = new FileWrite("D:/我的青春我做主.txt");
         fw.write("我的青春我做主");
         fw.flush();
  }catch(FileNotException e){
         e.printStackTrace();
  }catch(IOException e){
         e.printStackTrace();
  }finally{
         try{
               fw.close();
         }catch(IOException e){
               e.prntStackTrace();
         }
  }
  • 缓冲流和BufferdeReader类似

字节流是8为通用字节流,字符流是16为Unicode字符流

  • 字节流转字符流
 FileInputStream fis = new FileInputStream("D:/我的青春我做主.txt");
 InputStreamReader reader = new InputStreamReader(fis,"编码格式");
 //转换后同字符流相同
  • 打印输出字符流
     PrintWrite pw = new PrintWrite("stu.txt");
     pw.println("好好学习");//换行
     pw.print("天天向上");//非换行</pre>

序列化和反序列化操作对象

序列化

把Java对象转成二进制字节序列

如果要把对象转为二进制字节序列,需要实现Serializable

序列化多个对象时把对象存放到集合中去序列化

public class User implements Serializable{

}
public class ObjectOutputStreamDemo001{
    public static void main(String[] args){
        ObjectOutputStream oos = null;
        User user = new User();
        try{
            oos = new ObjectOutputStream(new FileOutputStream("User.txt"));
            oos.wriatObject(user);
        }catch(FileNotException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                oos.close();                
            }catch(IOException e){
                e.printStackTrace();
            }

        }
    }
}

反序列化

把二进制字节序列转成对象

反序列化集合中的多个对象使用集合存放

public class ObjectInputStreamDemo001{
    public static void main(String[] args){
        ObjectInputStream oos = null;
        User user = null;
        try{
            ois = new ObjectInputStream(new FileInputStream("User.txt"));
            user=ois.readObject(user);
        }catch(FileNotException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
        ois.close();                
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • tags:io categories:总结 date: 2017-03-28 22:49:50 不仅仅在JAVA领...
    行径行阅读 2,174评论 0 3
  • 1、IO流 1.1、概述 之前学习的File类它只能操作文件或文件夹,并不能去操作文件中的数据。真正保存数据的是文...
    Villain丶Cc阅读 2,667评论 0 5
  • 之所以写这个是因为Hadoop的IO与·这个类似 但要比这个深入,而且都还涉及到网络传输原理的五个层次。所以,一...
    起个什么呢称呢阅读 998评论 0 6
  • [TOC] IO流 IO流概述及其分类 IO概念 IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的...
    wh_阅读 7,192评论 0 22
  • 表格 在web的历史中,HTML的表格发挥了巨大作用。最初创建表格就是为了以表格的形式显示数据,后来变成了一个极受...
    风中丶凌乱阅读 449评论 0 1