1.数据在电脑中的存储方式
-
程序或程序中的数据没有存入数据库或其他任何介质时都存在内存中
-
内存:内存条以及CPU中的高速缓存
-
外存:硬盘、U盘、光盘等
-
数据要么存在内存中,要么存在外存中
-
我们可以形象的将内存和外存称为容器
-
I就是in,进入电脑,O就是out,就是从电脑输出出来
2.I/O
-
java语言提供了强大的IO机制来读取数据
-
I时输入操作,把外存中的数据读取到内存中,外存中的数据:比如硬盘上的txt、word、图片等
-
O是输出操作,把内存中的数据读取到外存中
3.数据流
-
数据流是java语言抽象出来的一个比较形象的东西,所有的读取操作都是以流的形式实现的
-
数据在电脑中传输就像水管里的水一样,从一端流向另一端
-
InputStream:从外界(硬盘、文件、网络)流向内存称为输入流
-
OutputStream:从内存流向外界称为输
4.数据流分类
-
字节流:一个字节一个字节的读取数据(一个字节是8位),这种流是万能的,什么类型的文件都能读取,包括文本文件、图片、声音文件、视频文件等等
-
InputStream、OutputStream:字节流的超类,为抽象类,我们用的都是他们的子类
-
-
字符流:一个字符一个字符的读取数据,java采用的是Unicode编码,一个字符占两个字节(所以一次读取16位),这种流是为了方便读取普通文本文件(txt)而存在的,不能读取word、图片、音频、视频等
-
Reader、Writer:字符流的超类,为抽象类,我们用的都是他们的子类
-
5.标准的输入输出
-
System.out:向标准的输出设备(显示器或打印机)输出数据,有两个方法:print(),println();
-
System.in:从标准的输入设备(键盘)输入数据
-
System.err:向标准的输出设备输出错误信息,有两个方法:print();println(),输出信息是红色的
6.File文件类
public static void main(String[] args) {
//以想遍历的路径目录来创建文件对象
File file = new File("C:\\Users\\MINGWANBAO\\Desktop\\金现代\\课件");
recurrence(file);
//拿到这个文件对象,判断它是否是目录
//如果不是目录(文件),直接打印文件名
//如果是目录,获取它的子文件夹或子文件
//遍历它的下级,拿到每个下级判断是否是目录
//如果不是,直接打印,如果是,获取下级,遍历下级
}
/**
* 以递归的思想遍历文件夹,
* 因为传递来的文件对象可能是目录也可能是文件
* 要先判断文件对象是否是目录
* 如果是继续遍历
* 如果不是直接打印
* @param file 传递的文件
*/
public static void recurrence(File file) {
//判断文件对象是否是目录
if (file.isDirectory()) {
//如果是目录,则file下可能存在子目录或子文件
//获取其下的所有文件和目录
File[] files = file.listFiles();
//遍历files,判断它的子项是目录还是文件
for (int i = 0; i < files.length; i++) {
//继续将每一项作为参数来遍历
recurrence(files[i]);
}
} else {
System.out.println(file);
}
}
-
File文件类和输入输出没有任何关系,就是用来标记文件、目录的,File对象就是目录和文件路径名的抽象表现形式
-
File文件类就是用来描述目录或文件信息的,并且提供了各种方法对文件进行管理
-
构造方法
//在此程序所在盘的根目录下创建文件夹(目录) File file1 = new File("\\test"); //若想要再D盘下创建文件夹,则写上盘符即可 File file2 = new File("D:\\test"); //若想要在此程序所在项目名目录下创建文件(和src同级的) File file3 = new File("test.txt"); //在指定目录下创建文件或文件夹,指定目录一定要真实存在 File file4 = new File("C:\\Users\\MINGWANBAO\\Desktop\\金现代\\test1.txt");
-
常用方法
-
boolean exists():判断目录或文件是否物理存在
-
boolean isFile():判断是否是文件
-
boolean isDirectory():判断是否是目录
-
boolean mkdir():创建目录
-
boolean createNewFile():创建文件
-
boolean delete():删除文件或目录
-
File[] listFiles():返回带完整路径的文件对象数组
-
String[] list():返回只有文件名的字符串数组
-
String getPath():返回文件或目录的完整路径
-
String getName():返回文件或目录名(只有名称,没有路径)
-
long length():获取文件的长度
-