Java IO文件流
程序员文章站
2024-01-21 18:58:04
...
JavaIO大纲
概念
- – 相对程序而言,如果需要读取就是in,i
- – 相对程序而言,如果需要写出就是out,o
熟悉IO中的重点工具类
- – File
- – 字节流:InputStream , OutputStream
- – 字符流:Reader , Writer
File文件流
概念
- – 文件和目录路径名的抽象表示形式
创建对象
- – File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
常见方法测试
//这个类用来测试File
public class Test2_File {
public static void main(String[] args) throws IOException {
//1,创建File对象
//参数可以表示一个文件的路径也可以是一个文件夹的路径
File file = new File("D:\\iotest\\1.txt");
//2,常见方法
System.out.println( file.length() );//获取文件的字节量
System.out.println( file.exists() );//判断文件是否存在
System.out.println( file.isFile() );//判断资源是否是文件
System.out.println( file.isDirectory() );//判断资源是否是文件夹
System.out.println( file.getName() );//获取文件名
System.out.println( file.getParent() );//获取父路径
System.out.println( file.getAbsolutePath() );//获取全路径
file = new File("D:\\iotest\\2.txt");
System.out.println( file.createNewFile() );//判断有没有新建成功
file = new File("D:\\iotest\\x\\y\\z");
System.out.println( file.mkdirs() );//创建多级不存在的目录
file = new File("D:\\iotest\\m");
System.out.println( file.mkdir() );//创建一级不存在的目录
System.out.println( file.delete() );//删除文件 或者 删除空的文件夹
//list()用来列出 文件夹 !!的资源
file = new File("D:\\iotest\\a");
String[] strs = file.list() ;
// [1.jpg, 1.txt, 2.jpg, 2.txt, m],数组里放的是文件名
System.out.println(Arrays.toString(strs));
File[] fs = file.listFiles() ;
//TODO fs数组里存的是什么呢 ?
// [D:\iotest\a\1.jpg, D:\iotest\a\1.txt, D:\iotest\a\2.jpg, D:\iotest\a\2.txt, D:\iotest\a\m]
System.out.println( Arrays.toString(fs) );
}
}
IO相关练习题:递归求目录总大小
- –递归:在方法的内部调用方法本身
- –1、列出文件夹下面的所有资源
- –2、判断如果资源是文件,把文件的字节量求和length()
- –3、判断如果资源是文件夹,继续列表,继续判断,如果是文件求和如果是文件夹继续列表继续判断…开始重复的干1和2的活儿
public class Test3_Size {
public static void main(String[] args) {
//1,接收用户输入的目录
String path = new Scanner(System.in).nextLine();
File dir = new File(path);
//2,调用size()求总大小
long sum = size(dir);
System.out.println(sum);
}
//创建size(),求大小
private static long size(File dir) {
//1、列出文件夹下面的所有资源
File[] fs = dir.listFiles();
long count = 0;//定义变量,记录总和
//1.1,我们需要获取每个File对象,就需要遍历fs数组
for (int i = 0; i < fs.length; i++) {
File file = fs[i] ; //表示当前遍历得到的资源
// --2、判断如果资源是文件,把文件的字节量求和length()
if( file.isFile() ) {//是文件
count = count + file.length() ;//求和
}else if( file.isDirectory() ) {//是文件夹
// --3、判断如果资源是文件夹,继续列表,继续判断,如果是文件求和如果是文件夹继续列表继续判断....开始重复的干1和2的活儿
count = count + size(file);//递归??以为干的活儿和size()一样了....
}
}
return count;
}
}
上一篇: JAVASE-day02
下一篇: 3.30javase笔记day02