java中的io流
io流就是数据传输的管道(对于java来说,我们通过对某个类的操作,来进行数据的传输,那么这个类就是io流)
file类
所有的数据都是以文件的形式储存的。
在学习io流之前,我们先学习file类来对文件进行操作。
public class file01 {
/*
* 学习file类的对象创建
*
* 一个三种方式(实际四种)
*/
public static void main(String[] args) throws Exception {
// //第一种创建方式
// File file = new File("E:\\io");
//第二种创建方式
File file1=new File("E:\\io\\a.txt");
//第是三种创建方式
// File file2=new File("E:\\io");
// File test = new File(file2, "test");
/*
* 学习file类创建文件
*
* 通过createNewFile方式创建文件,创建成功返回true,如果存在此文件返回false
*/
boolean newFile = file1.createNewFile();
System.out.println(newFile);
//如果没有指明文件的创建路径,那么就会在java编译器中创建一个文件
//如果创建文件的目录不存在,那么就是报错
File file = new File("aa.txt");
file.createNewFile();
/*
* 学习file类创建文件夹
*
* 通过mkdir创建一个文件夹,通过makirs创建多个文件夹
*
* */
File file2 = new File("E:\\io1");
//mkdir可创建一个文件夹
boolean mkdir1 = file2.mkdir();
System.out.println(mkdir1);
File file3 = new File("E:\\io2\\io02\\io002");
//mkdirs可创建多个文件夹
boolean mkdirs2 = file3.mkdirs();
System.out.println(mkdirs2);
//注意:如果没有指明文件的创建路径,那么就会在java编译器中创建一个文件
/*
* 学习file类删除文件或文件夹
*
* 通过delete方法进行删除操作
*
* */
System.out.println("--------------------------------------");
File file4 = new File("E:\\io1\\2.txt");
//如果被删除的文件夹下面有文件或文件夹,那么就不能进行删除
System.out.println(file4.delete());
File file5 = new File("a.txt");
//如果没有指明路径,那么删除的是java编译器的文件或文件夹
System.out.println(file5.delete());
//注意:删除文件夹,文件夹里面必须是空的;删除文件,必须指明正确的文件路径,并且指出正确的文件名和文件类型
/*
* 学习file类的对文件夹或文件的改名或移动
*
*同renameTo方法进行改名或移动
*
* */
System.out.println("---------------------------------------------------");
File file6 = new File("E:\\io\\aaaaaa.txt");
//需要调用renameTo方法,并传入新new file对象来接收改名后的名字
file6.renameTo(new File("E:\\io1\\a.txt"));
//如果改名的路径和原来路径相同,名字不同,那么则进行改名
//如果改名的路径和原来的路径不同,名字相同,那么则进行移动
//如果改名的路径和原来的路径不同,名字不同,那么则进行移动并改名
/*
* 学习file类对文件或文件夹的判断
*
* 6种判断方法
* */
System.out.println("---------------------------------------------------");
File file7 = new File("E:\\io");
File file8 = new File("E:\\io");
File file9 = new File("E:\\io\\a.txt");
//exists判断文件是否存在
System.out.println( file7.exists());
//isDirectory判断是否为文件夹
System.out.println(file8.isDirectory());
//isFile判断是否为文件
System.out.println(file9.isFile());
//canRead判断文件是否可读
System.out.println(file9.canRead());
//canWrite判断文件是否可写
System.out.println(file9.canWrite());
//isHidden判断文件是否隐藏
System.out.println(file8.isHidden());
System.out.println("---------------------------------------------------");
/*
*
* 学习file类对文件的获取
*
* */
//绝对路径:从盘符到文件的名称,叫做绝对路径
//相对路径:只告诉你相对于当前的文件位置
//通过getAbsolutePath方法获取绝对路径
System.out.println(file1.getAbsolutePath());
//通过getPath方法获取相对路径
System.out.println(file6.getPath());
//通过getName方法获取名字(文件或文件夹的名字)
System.out.println(file3.getName());
File file10 = new File("bbb.txt");
boolean newFile1 = file10.createNewFile();
System.out.println(newFile1);
//获取文件的长度
System.out.println(file10.length());
//获取空文件夹没有长度
System.out.println(file3.length());
//获取文件最后一次修改时间
long l = file10.lastModified();
Date data = new Date(l);
System.out.println(data.toLocaleString());
}
}
public class file02 {
/*
* 学习通过增强for打印文件下所有文件名称
* 打印文件下文件的名称和目录
*
* */
public static void main(String[] args) {
File file = new File("D:\\HBuilderX");
//通过增强for遍历改目录下所有文件名称
String[] list = file.list();
for (String str:list) {
System.out.println(str);
}
//通过增强for遍历目录下所有文件目录和名称
File[] files = file.listFiles();
for (File str:files) {
System.out.println(str);
}
}
}
io流的分类
可以根据输入的流向和数据类型分为两类。
流向:1. 输入流(读)
2.输出流(写)
数据类型:1.字节数据
a.字节输入流(InputStream)
b.字节输出流(OutputStream)
2.字符数据
a.字符输入流(Reader)
b.字符输出流(Writer)
注释:字符本质也是以字节的方式储存的。
后续会补充