io 基本概念
1.输入流,输出流
输入流:将数据读到程序中。
输出流:将程序中的数据输出到外设或文件中。
2. 缓存存在于cpu中,速度快慢如下:
缓存>内存>硬盘
3.InputStream、OutputStream
InputStream:不关心数据源来自何种设备。
OutputStream:不关心数据的目的地是何种设备。
4 数据流分类:
1) 字节流:数据流中最小的数据单元是字节
2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
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"); } } }