IT源码网

io 基本概念

wyy 2022年03月22日 编程语言 288 0

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"); 
        } 
    } 
}

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

BufferedReader 读取文件内容,原样输出