• io 基本概念


    1.输入流,输出流

    输入流:将数据读到程序中。

    输出流:将程序中的数据输出到外设或文件中。

    2. 缓存存在于cpu中,速度快慢如下:

    缓存>内存>硬盘

    3.InputStream、OutputStream

    InputStream:不关心数据源来自何种设备。

    OutputStream:不关心数据的目的地是何种设备。

    4 数据流分类:

    流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种:
     1)  字节流:数据流中最小的数据单元是字节
     2)  字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
     
    5. 标准输入,输出数据流

    java系统自带的标准数据流:java.lang.System:
    复制代码 代码如下:

    java.lang.System
    public final class System extends Object{
      static PrintStream err;//标准错误流(输出)
      static InputStream in;//标准输入(键盘输入流)
      static PrintStream out;//标准输出流(显示器输出流)
    }

    注意:
    (1)System类不能创建对象,只能直接使用它的三个静态成员。
    (2)每当main方法被执行时,就自动生成上述三个对象。

    6.  标准输入流 System.in

    System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数 据类型为InputStream。方法:

    int read() //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束。
    int read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数。

    package com.xuzhiwen.io;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class SystemTest {
        public static void main(String[] args) throws IOException {
            System.out.println("please input:");
            InputStream input = System.in;
            int i;
            while((i=input.read()) != -1){
                System.out.print((char)i);
            }
        }
    }

    运行结果:

    7. System.out.println()

    print(Object)和println(Object)方法在运行时将调 用参数Object的toString方法。

    8. 创建缓冲区逐行读入数据

    package com.xuzhiwen.io;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class InputStreamReaderTest {
        public static void main(String[] args) throws IOException {
            InputStreamReader read = new InputStreamReader(System.in);
            BufferedReader bf = new BufferedReader(read);
            String str = bf.readLine();
            while(str != null){
                System.out.println(str);
                str = bf.readLine();
            }
            read.close();
            bf.close();
        }
    }

    运行结果如下:

    9.Java中的主要IO类:

    主要的类如下:

         1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

         2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

         3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

      Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。

         4. Reader(文件格式操作):抽象类,基于字符的输入操作。

         5. Writer(文件格式操作):抽象类,基于字符的输出操作。

         6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作

    10.体系结构图:

     11. 判断文件是否存在

    package com.xuzhiwen.io;
    
    import java.io.File;
    import java.io.IOException;
    
    public class FileTest {
        public static void main(String[] args) throws IOException {
            String separator = File.separator;
            File file = new File("E:"+separator+"filetest"+separator+"test.txt");
            if(file.exists()){
                file.delete();
            }else{
                file.createNewFile();
            }
        }
    }

    12. 删除文件夹本身及文件夹中的所有文件

    package com.xuzhiwen.io;
    
    import java.io.File;
    
    public class DeleteAllFile {
        private static boolean delAllFile(File file){
            if(!file.exists()){
                System.out.println("文件或目录不存在!");
                return false;
            }
            
            if(file.isDirectory()){
                String arr[] = file.list();
                for (String s : arr) {
                    boolean success = delAllFile(new File(file,s));
                    if(!success){
                        return false;
                    }
                }
            }
            return file.delete();
        } 
        
        public static void main(String[] args) {
            String separator = File.separator;
            File file = new File("E:"+separator+"filetest"+separator+"11.txt");
            boolean success = delAllFile(file);
            if(success){
                System.out.println("del success");
            }else{
                System.out.println("del fail");
            }
        }
    }
  • 相关阅读:
    问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
    SpringBoot之Servlet、Filter、Listener配置
    spring boot 使用@ConfigurationProperties
    Mysql字段属性应该尽量设置为not null
    微服务—ELK分布式日志框架
    微服务—分布式服务追踪sleuth和zipkin
    微服务—熔断器Hystrix
    @RequestBody和@ResponseBody的使用情形以及RestTemplate的http报文转换
    application/x-www-form-urlencoded和multipart/form-data
    基于JWT的token身份认证方案
  • 原文地址:https://www.cnblogs.com/beibidewomen/p/7357621.html
Copyright © 2020-2023  润新知