Java IO文件流

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;
				}
			}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值