java基础学习--I/O流
什么是IO流?
file类
file类常用的方法有下面几种:
public String getAbsolutePath() //获取绝对路径 public String getPath() //获取路径 public String getName() //获取名称 public String getParent() //获取上层文件目录路径 。若无 ,返回 null null public long length () //获取文件长度(即:字节数)。不能获取目录的长度 。 public long lastModified() //获取 最后一次的修改时间 ,毫秒值 public String[] list () //获取指定目录下的所有文件或者 文件 目录 的名称数组 public File[] listFiles () //获取指定目录下的所有文件或者 文件 目录 的File数
public boolean isDirectory() //判断是否是文件夹
public boolean isFile() //判断是否是文件
public boolean exists() //判断是否存在
public boolean creatNewFile() //创建文件,若文件存在则不创建,返回false
public boolean mkdir() //创建文件目录,如果 此文件目录存在 ,就不创建 了。 如果此文件目录的上层不存在 ,也不创建 。
public boolean mkdirs() //创建文件 目录 。如果 上层 文件 目录 不存在 ,一并创建
下面代码利用file类简单实现创建文件夹,并在文件夹里面创建空文件。
public class FileTest { public boolean deleteHello(){ File file4 = new File("I:\\java_study\\java_code\\Test\\Filestudy\\hello\\hello.txt"); if (file4.exists()){ file4.delete(); return true; }else{ return false; } } public static void main(String[] args) { File file = new File("I:\\java_study\\java_code\\Test\\Filestudy\\hello"); if (!file.exists()){ file.mkdir(); } File file1 = new File(file,"1.txt"); if (!file1.exists()){ try { file1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } File file2 = new File(file,"2.txt"); if (!file2.exists()){ try { file2.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } File file3 = new File(file,"3.txt"); if (!file3.exists()){ try { file3.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } FileTest t1 = new FileTest(); System.out.println(t1.deleteHello()); } }
流的分类
- 按操作数据单元不同分为:字节流(8bit),字符流(16bit)
- 按数据流的流向不同分为:输入流、输出流
- 按流的角色的不同分为:节点流、处理流
- 节点流:直接从数据源或目的地读写数据
- 处理流:不直接连接到数据源或者目的地,而是连接在已存在的流之上,通过对数据的处理为程序提供更强大的读写功能
节点流
节点流:直接与数据源相连,读入或读取,直接使用节点流读写不方便,为了更快地读写文件,需要使用处理流。
处理流
处理流和节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。如 BufferedReader
处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
转换流
InputStreamReader、OutputStreamWriter要InputStream或OutputStream作为参数,实现从字节流到字符流的转换。
构造函数
InputStreamReader(InputStream); //通过构造函数初始化,使用的是本系统默认的编码表GBK。 InputStreamReader(InputStream,String charSet); //通过该构造函数初始化,可以指定编码表。 OutputStreamWriter(OutputStream); //通过该构造函数初始化,使用的是本系统默认的编码表GBK。 OutputStreamwriter(OutputStream,String charSet); //通过该构造函数初始化,可以指定编码表。
Java共涉及到的IO流一共有40多个类,都是从这4个抽象基类派生出来的,由这4个类派生出来的子类名称都是以其父类名作为子类名后缀。
参考