IO流
IO流:
I -> Input 输入流(读文件)
数据从文件中流向内存
O -> Output 输出流(写文件)
数据从内存中流向文件
流:流向,把数据从一个地方带到另一个地方
一、测试方式:
1.Debug–断点测试
2.System.out.println()–打桩测试
3.junit --单元测试
junit :单元测试–以方法为单位,可以取代主方法
第三方jar包其实就是别人写好的代码:
1.将别热写好的代码工程,打包成jar文件
是将编译后的字节码文件进行打包
2.在自己的工程中 关联这个jar文件 --> 添加依赖
3.在代码中直接使用 import
Junit的使用步骤:
1.在工程中创建一个lib文件夹
2.将jar包复制到lib中
3.选择jar包,添加依赖 -> Add as Library
4.写一个测试类,测试方法不需要返回值,不需要参数
并且在方法上添加注解 @Test
二、File文件类
1.File的创建-构造方法
a.参数传入文件路径
new File(“ ”)
b.参数传入父路径 和 子路径
new File(“a”,“a.txt”)
注意:new出来的File对象只是存在于JVM内存中的一个对象,和本地磁盘有没有这个文件,没有任何关系!!
2.路径
a.绝对路径
window --从盘符出发
E:\IDEAproject\2107\day_18\a.txt
b.相对路径:a.txt
不固定的,会有一个参照对象
参照路径:E:\IDEAproject\2107\day_18
我们会把参考路径成为 - 当前目录
[ . ] 表示当前路径
[ . . ] 表示上一级目录,现在的参考值的上一层
3.通过相对路径获取绝对路径
1).getResource() - 【基于包下】
xx.class.getResource(“相对路径”).getPath()
xx.class -> 获取类的字节码文件对象
2).getClassLorder() - 【基于src】
xx.class.getClassLorder().getResource(“相对路径”).getPath()
3)两个方法的区别:
得到的参考值不一样
4)理解:
①.类路径(classPath): src编译后的目录,也叫做编译根目录
②.以上两种方式得到的绝对路径,都是在编译后的根目录中,和src没有直接关系
③.在以后的开发中,我们一般是将文件存储在src下,因为src中的内容会自动编译到类路径中
4.使用绝对路径的优势
优势: 位置永远不会出错(针对个人电脑)
缺点: 如果存放在别人电脑上的,绝对路径有可能会出错
5.常用方法
File getAbsoluteFile() - 获取绝对路径
boolean exists() - 判断该文件是否存在
boolean isDirectory() - 判断是否是目录
boolean isFile() - 判断是否是文件
boolean createNewFile() - 创建文件
boolean mkdir() - 创建单层目录
boolean mkdirs() -创建多层目录
String getName() - 获取文件的名字
String getPath() - 获取文件路径名
boolean renameTo(File dest) - 从一个文件移动到另一个文件
String[] list() -列出file所有文件的名字
File[] listFiles() -列出file所有文件的对象
boolean delete() -删除
File[] listFiles(FileFilter filter)
package test;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
public class Work01 {
@Test//1.创建两个文件对象,分别使用相对路径和绝对路径创建。
public void test01() throws IOException {
File file = new File("x.txt");
file.createNewFile();
File file1 = new File("src/test/j.txt");
file1.createNewFile();
}
@Test//2.检查D盘下是否存在文件a.txt,如果不存在则创建该文件。
public void test02() throws IOException {
File file = new File("D:aaa/b.txt");
boolean newFile = file.createNewFile();
System.out.println(newFile);
}
@Test//3.在D盘下创建一个名为bbb的文件夹。
public void test03(){
File bbb = new File("D:aaa");
boolean mkdirs = bbb.mkdirs();
}
@Test//4.在D盘下创建一个名为ccc的文件夹,要求如下:
// 1.ccc文件夹中要求包含bbb子文件夹
// 2.bbb子文件夹要求包含aaa文件夹
public void test04(){
File bbb = new File("D:ccc/bbb/aaa");
boolean mkdirs = bbb.mkdirs();
}
@Test//5.获取D盘aaa文件夹中b.txt文件的文件名,文件大小,
// 文件的绝对路径和父路径等信息,并将信息输出在控制台。
public void test05(){
File file = new File("D:aaa/b.txt");
String name = file.getName();
System.out.println(name);
long length = file.length();
System.out.println(length);
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
String parent = file.getParent();
System.out.println(parent);
}
@Test// 6.1.判断File对象是否是文件,是文件则输出:xxx是一个文件,否则输出:xxx不是一个文件。
public void test06(){
File file = new File("D:aaa/b.txt");
boolean file1 = file.isFile();
if(file1==true){
System.out.println("是文件");
}else {
System.out.println("不是文件");
}
}
@Test// 6.2.判断File对象是否是文件夹,是文件夹则输出:xxx是一个文件夹,否则输出:xxx不是一个文件夹。(xxx是文件名或文件夹名)
public void test07(){
File file = new File("D:aaa");
boolean directory = file.isDirectory();
if(directory==true){
System.out.println("是文件夹");
}else {
System.out.println("不是文件夹");
}
}
@Test// 7.删除文件 例如: a.txt
public void test08(){
File file = new File("src/test/Demo02.java");
file.delete();
}
@Test// 8.删除目录[空目录] 例如: dir
public void test09(){
File file = new File("bbb");
file.delete();
}
@Test// 9.删除目录[非空目录] 例如: test/a/a.txt
public void test10(){
File file = new File("ccc");
deleteFile(file);
}
private void deleteFile(File file){
File[] files = file.listFiles();
if(files!=null){
for (File f:files) {//有可能遍历出来的文件是null值,出现空指针异常
deleteFile(f);
}
}
file.delete();
}
@Test
public void test11(){
File file = new File("dirs");
delete(file);
}
public void delete(File file){
File[] list = file.listFiles();
for (File ff:list) {
if (ff.isFile()){
ff.delete();
}if (ff.isDirectory()){
delete(ff);
ff.delete();
}
}
file.delete();
}
}