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

 

posted @ 2017-08-14 14:23  beibidewomen  阅读(286)  评论(0编辑  收藏  举报