欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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基础

上一篇: JAVASE-day02

下一篇: 3.30javase笔记day02