java I/O

作者: ticktackdong | 来源:发表于2018-04-19 22:24 被阅读0次
    一.文件/文件夹File
    1.创建文件对象:
           new File("absolutePath/Path");
           new File(parentDir,fileName);
    2.文件常用方法
         f.exists();
         f.isDirectory();
         f.isFile();
         f.length();
         f.lastModified();
         f.renameTo();
         f.list();
         File[] fs= f.listFiles();
         f.getParent();
         f.getParentFile();
         f.mkdir();
         f.mkdirs();
         f.createNewFile();
         f.listRoots();
         f.delete();
         f.deleteOnExist();
    
    二.InputStream/OutputStream字节输入输出流
         FileInputStream/FileOutputStream
      示例代码
          try {
            // 准备文件lol2.txt其中的内容是空的
            File f = new File("d:/lol2.txt");
            // 准备长度是2的字节数组,用88,89初始化,其对应的字符分别是X,Y
            byte data[] = { 88, 89 };
    
            // 创建基于文件的输出流
            FileOutputStream fos = new FileOutputStream(f);
            // 把数据写入到输出流
            fos.write(data);
            // 关闭输出流
            fos.close();
               }
    
    三.关闭流的方式
      1.在try中关闭
       如果文件不存在或者读取时出现问题将会转入catch语句导致关闭流的代码得不到执行
      2.在finally中关闭
         流的声明在try的外面(保证finally可以访问)+关闭之前判断是否为空+关闭时还需要再一次trycatch
     3.在try()括号中关闭
    
    四.字符流Reader/Writer
        FileReader/FileWriter(这次用char数组来保存数据)
    
    五.缓存流BufferedReader/PrintWriter,flush
      读取和写入都可以暂时保存到缓存中等缓存满了再输出,flush用于不用等缓存满了立马把数据写入硬盘    
      BufferedReader可以一次读取一行
        File f = new File("d:\dong");
        try( FileReader fr = new FileReader(f);
                 BufferedReader bffR = new BufferedReader(fr)){
                while(true){
                 String line = bffR.readLine();
                     if(null!=line)
                          sysout(line);
               }
             }   
    
    六.数据流DataInputStream/DataOutputStream

    要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,否则会出现EOFException,因为DataOutputStream 在写出的时候会做一些特殊标记,只有DataInputStream 才能成功的读取

          File f =new File("d:/lol.txt");
             try (
                FileInputStream fis  = new FileInputStream(f);
                DataInputStream dis =new DataInputStream(fis);
        ){
            boolean b= dis.readBoolean();
            int i = dis.readInt();
            String str = dis.readUTF();
             
            System.out.println("读取到布尔值:"+b);
            System.out.println("读取到整数:"+i);
            System.out.println("读取到字符串:"+str);
    
        }
    
    
    
    
    File f =new File("d:/lol.txt");
        try (
                FileOutputStream fos  = new FileOutputStream(f);
                DataOutputStream dos =new DataOutputStream(fos);
        ){
            dos.writeBoolean(true);
            dos.writeInt(300);
            dos.writeUTF("123 this is gareen");
        }
    
    七.对象流

    对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘

    一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口

    八.System.in
      1. try (InputStream is = System.in;) {
            while (true) {
                // 敲入a,然后敲回车可以看到
                // 97 13 10
                // 97是a的ASCII码
                // 13 10分别对应回车换行
                int i = is.read();
                System.out.println(i);
            }
        } 
    

    2.Scanner 可以读行/整数

            Scanner s = new Scanner(System.in);
             
            while(true){
                String line = s.nextLine();
                System.out.println(line);
               int a = s.nextInt();
            }

    相关文章

      网友评论

          本文标题:java I/O

          本文链接:https://www.haomeiwen.com/subject/ybsgkftx.html