一.IO概述
我们要想把数据长久保存起来,就要把内存中存储的数据保存到内存以外的可以长久保存数据的设备上,如U盘、硬盘、光盘等。
当要把内存中的数据(变量和集合中的数据)存储到持久化设备上的动作称为输出(写出)OutPut操作。
当把持久化设备上的数据读取到内存中的动作称为输入(写入)InPut操作。
因此把这种输入输出动作称为IO操作
流是一种抽象概念,它代表了数据的无结构化传递,简单说IO流就是以流的方式进行输入输出操作。
三种方式
1.按流的方向分为:输入流和输出流
3.按流的功能不同分为:节点流和处理流
二.File类的出现
在Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可,这样就可以对文件进行操作
三.File构造函数
public static void main(String[] args){ //与系统有关的路径分隔符 //在win ; , 在linux : System.out.println(File.pathSeparator); //与系统有关的默认名称分隔符 //在win \, 在linux / System.out.println(File.separator); //将文件封装File对象
//此方法并不校验文件是否存在,只是用来描述文件路径位置 File file=new File("E:\io1127\demo01.txt"); System.out.println(file); //拼接,父类文件路径拼接文件名,用于业务复杂情况,提高效率 File file2=new File("E:\io1127","demo02.txt"); System.out.println(file2); //父类对象+子类字符串 File+String 此方法最为常用 File file3=new File(new File("E:\io1127"),"demo02.txt"); System.out.println(file3); }
四.File类的获取
public static void main(String[] args) throws IOException {
method01();
}
public static void method01(){
//File 中的获取方法 对象路径
File file=new File("E:\io1127\demo01.txt");
//相对路径 此方法默认获取工作空间项目路径,不能获取指定路径
//File file=new File("xz01");
//获取绝对路径,即全路径 指定位置路径
System.out.println(file.getAbsolutePath());
//获取文件或文件夹名 指定位置路径文件夹或文件名
System.out.println(file.getName());
//获取路径 要根据封装的文件路径来
System.out.println(file.getPath());
//获取文件或文件夹大小 返回值是long
System.out.println(file.length());
}
五.文件和文件夹的创建删除等
public static void main(String[] args) throws IOException {
//此处用来调用各个方法 method02(); } //创建文件 public static void method02() throws IOException{ //明确要创建的文件位置 //File file=new File("E:\io1127\demo02.txt");
//创建一个文件,没有文件类型 File file=new File("E:\io1127\a"); //创建文件 此方法没有覆盖功能,只能创建文件 boolean flag=file.createNewFile(); System.out.println(flag); } //删除文件或文件夹 public static void method03(){ //明确要删除的文件位置 File file=new File("E:\io1127\a"); //删除文件 true:删除成功,false:无法重复删除 boolean flag=file.delete(); System.out.println(flag); } //判断File public static void method04(){ //明确文件位置 File file=new File("E:\io1127"); //判断文件是否存在 System.out.println(file.exists()); //判断文件是否是文件夹 System.out.println(file.isDirectory()); //判断是否是文件 System.out.println(file.isFile()); } //创建文件夹 public static void method05(){ //明确要创建文件夹的位置 File file=new File("E:\io1127\a\b\c"); //创建:mkDir只能创建一级文件夹,mkDirs可以创建多级文件夹,此方法多用 boolean flag=file.mkdirs(); System.out.println(flag); } //获取某目录下的文件和文件夹 public static void method06(){ //明确要获取的文件夹名 File file=new File("E:\io1127"); //获取该目录下的文件和文件夹的名称数组 String[] names=file.list(); //增强for遍历 for(String name:names){ System.out.println(name); } } //获取某目录下的文件和文件夹的File对象数组 public static void method07(){ //获取文件数组 File file=new File("E:\io1127"); //获取File对象数组 File[] files=file.listFiles(); //遍历 for(File f:files){ System.out.println(f); } }
练习:
package com.oracle.demo01; import java.io.File; import java.io.IOException; public class Demo04 { public static void main(String[] args) throws IOException { method07(); } public static void method01(){ //获取绝对路径(全路径)方法 File file=new File("E:\io1127\demo01.txt"); //相对路径 //File file=new File("x"); //获取绝对路径 System.out.println(file.getAbsolutePath()); //获取文件或文件夹名 System.out.println(file.getName()); //获取路径 System.out.println(file.getPath()); //获取文件或文件夹大小 System.out.println(file.length()); } //创建新文件 public static void method02() throws IOException{ //明确要创建的文件位置 File file=new File("E:\io1127\demo03.txt"); //创建新文件 System.out.println(file.createNewFile()); } //删除文件或文件夹 public static void method03(){ //明确要删除的文件位置 File file=new File("E:\io1127\demo03.txt"); System.out.println(file.delete()); } //判断File public static void method04(){ File file=new File("E:\io1127\demo01.txt"); //判断是否存在 System.out.println(file.exists()); //判断是否是文件夹 System.out.println(file.isDirectory()); //判断是否是文件 System.out.println(file.isFile()); } //创建文件夹 public static void method05(){ //明确要创建的文件位置 File file=new File("E:\io1127\xz"); //创建文件夹 false:不可重复创建,没有覆盖功能 System.out.println(file.mkdir()); //明确要创建的文件位置 File file2=new File("E:\io1127\xz\1\2\3"); //创建多级文件夹 用mkDirs方法,复数表示创建多个文件夹 System.out.println(file2.mkdirs()); } //获取某目录下的文件或文件夹 public static void method06(){ //明确要获取得文件位置 File file=new File("E:\io1127"); //获取该目录下的文件和文件夹的名称数组 String[] names=file.list(); //遍历 for(String name:names){ System.out.println(name); } } //获取某目录下的文件或文件夹File对象数组 public static void method07() throws IOException{ //明确要获取的文件位置 File file=new File("E:\io1127"); //获取File对象数组 File[] files=file.listFiles(); for(File f:files){
//此处可以用f调用各类方法,此刻返回值是boolean,用来判断是否可以创建新文件 System.out.println(f.createNewFile()); } } }