24蓝旭春季培训预习~~JavalO流

内容:File和 Path、IO流

一、File

File对象就代表了文件和目录路径名的抽象表示形式。

1、File一般方法:

boolean delete()删除文件/文件夹
boolean exists()判断文件/文件夹是否存在
File getAbsoluteFile()获取文件/文件夹的绝对路径(返回值:File)
String getName()获得文件/文件夹名字
String getParent()获取文件/文件夹的父文件/文件夹
File getParentFile()获取文件/文件夹的父文件/文件夹(返回值:File)
String getPath()获取文件/文件夹的路径
boolean isDirectory()判断该文件/文件夹是不是文件夹
isFile()判断该文件/文件夹是不是文件
isHidden()判断该文件/文件夹是否隐藏
long lastModified()获取文件/文件夹最后一次修改时间
long length()获取文件大小;获取文件夹里面的文件个数
String[] list()获取文件夹的文件名字以String[]返回
File[] listFiles()获取文件夹的文件名字以File[]返回
boolean mkdir()创建文件/文件夹

2、File构造方法:

File(String pathname)pathname文件/文件夹路径

例如: 

File(String pathname) :通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。


File(File parent, String child) :根据 路径为parent的File对象 和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child) :根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

	public static void main(String[] args) throws IOException {
 
		// File(String pathname):将指定的路径名转换成一个File对象
		File file = new File("F:\\a\\b.txt");
		System.out.println(file);
		// output:F:\a\b.txt
 
		// File(String parent, String child):根据指定的父路径和文件路径创建File对象
		File file2 = new File("F:\\a", "b.txt");
		System.out.println(file2);
		// output:F:\a\b.txt
 
		// File(File parent, String child):根据父路径对象和文件路径创建File对象
		File parent = new File("F:\\a");
		File file3 = new File(parent, "b.txt");
		System.out.println(file3);
		// output:F:\a\b.txt
 
                //使用匿名内部类创建File对象
		File file4 = new File(new File("F:\\a"), "b.txt");
		System.out.println(file4);
		// output:F:\a\b.txt
 
	}
  • 创建功能/删除功能 

           boolean createNewFile() 
           boolean mkdir() 
           boolean mkdirs()
           boolean delete()

	private static void method1() throws IOException {
		//创建File对象,指向的路径为相对当前项目的路径,即项目的根位置
                File f1= new File("a.txt");
		
		//boolean createNewFile() :当指定文件不存在时,创建文件并返回true;否则,返回false
		System.out.println(f1.createNewFile());
		//output:false(说明文件已经存在,创建失败)
		
		//boolean mkdir() : 当指定文件夹不存在时,创建文件夹并返回true;否则,返回false
		File f2 = new File("b");
		System.out.println(f2.mkdir());
		//output:true
		
		//boolean mkdirs() : 创建多级目录
		File f3 = new File("c\\d\\e");
		System.out.println(f3.mkdirs());
		//output:true
		
		//boolean delete() : 删除存在的指定文件或文件夹,成功返回true,否则返回false
		System.out.println(f1.delete());
		//output:true
		System.out.println(f2.delete());
		//output:true
		System.out.println(f3.delete());
		//output:true(这里只删除了c/d/e文件目录中的e)
		
		//删除文件夹时,文件夹下不能有文件夹或文件。同时,删除的文件不经过回收站。
		File f4 = new File("c");
		File f5 = new File("c\\d");
		
		System.out.println(f4.delete());
		//output:false(c文件夹下还有其他文件 因此不能删除,返回false)
		System.out.println(f5.delete());
		//output:true
		System.out.println(f4.delete());
		//output:true(c文件夹下没有文件时,才能删除c,返回true)
	}
  • 判断功能

              boolean exists() 
              boolean isAbsolute() 
              boolean isDirectory() 
              boolean isFile() 
              boolean isHidden() 

	private static void method2() {
		//创建File对象
		File f1 = new File("a.txt");
		File f3 = new File("b");
		File f2 = new File("f:\\test.txt");
		
		//boolean exists() : 判断文件或文件夹是否存在,存在返回true,否则返回false
		System.out.println(f1.exists());
		//output:false
		
		//boolean isAbsolute() : 判断File对象指向是否是绝对路径,是返回true。
		System.out.println(f1.isAbsolute());
		//output:false  f1对象存储的为相对地址
		System.out.println(f2.isAbsolute());
		//output:true	f2对象存储的为绝对地址
		
		//boolean isDirectory() : 判断File对象指向的路径是否为文件夹,是返回true。
		//boolean isFile() : 判断File对象指向的路径是否为文件,是返回true。
		System.out.println(f1.isDirectory());
		//output:false   a不是目录
		System.out.println(f3.isDirectory());
		//output:true	 b是目录
		
		System.out.println(f1.isFile());
		//output:true   a是文件
		System.out.println(f3.isFile());
		//output:false	 b不是文件
		
		//boolean isHidden() : 判断文件是否为隐藏文件,是返回false
		System.out.println(f1.isHidden());
		//output:false
	}

File中其他的几个获取方法,返回值都是数组形式

        String[] list()
        File[] listFiles()
        static File[] listRoots()

	private static void method5() {
		File f = new File("f:\\test");
 
		// String[] list(): 返回当前路径下所有的文件和文件夹 名称 的数组
							// 只有指向文件夹的File才能调用该方法
		String[] str1 = f.list();
		for (String s : str1) {
			System.out.println(s);
		}
		// output:test.jpg
		// 		  test.txt
 
		// File[] listFiles() : 返回当前路径下所有的文件和文件夹的数组
								// 只有指向文件夹的File才能调用该方法
		File[] file1 = f.listFiles();
		for (File file : file1) {
			System.out.println(file);
		}
		// output:f:\test\test.jpg
		//		  f:\test\test.txt
 
		
		// static File[] listRoots(): 静态方法,返回所有的盘符
		File[] file2 = File.listRoots();
		for (File file : file2) {
			System.out.println(file);
		}
		// output:        C:\
		//		  D:\
		//		  E:\
		//		  F:\
		//	          G:\
		//		  I:\
	}

二、Path

1、什么是环境变量:

path环境变量是用于记住程序路径,方便在命令行窗口cmd中的任意目录启动程序。

注:一般在cmd中启动某程序时,需要先在cmd中将目录转到该程序所在目录(保存路径),然后才可以启动该程序。如果cmd中的目录不是该程序的所在目录,则启动时会报错。

举例如下:在cmd中启动名为PotPlayerMini的视频播放器程序,此时cmd中的目录并不是该程序的所在路径,启动则报错如下:

2、为什么要配置path环境变量

当我们在cmd中启动程序时,系统会根据以下规则去寻找并启动程序:

1.系统首先会在cmd中的当前目录下搜索该程序并启动,如果cmd的当前目录下 有 该程序,则该程序被启动;

2.如果cmd的当前目录下 没有 该程序,则系统会进入环境变量中path条目中搜索该程序所在目录(保存路径),如果path中添加了该程序的所在目录(保存路径),则该程序被启动;

3.如果path中 没有 添加该程序的所在目录(保存路径),则系统此次搜索结果是未找到该程序,则会报错,程序不被启动。

举例如下:PotPlayerMini程序保存目录(保存路径)是在G盘的potplayer文件夹下

然后我们将该目录添加到path环境变量中,如下:

然后我们再新打开一个cmd窗口,启动PotPlayerMini:

此时cmd中的当前目录并不是PotPlayerMini程序的所在目录(保存路径),但该程序可以被启动。

即:将某个程序的所在目录(保存路径)添加到path环境变量中后,我们便可以在cmd中的任意目录下启动该程序。

注意:当我们新增了一个path变量后,需要点击确定以进行保存,然后需要重新打开一个新的cmd窗口。如果是在添加path变量前打开的cmd窗口,则新增的path变量在该cmd窗口内不会生效。

三、IO流

1.IO:输入(Input读取数据)/输出(Output写数据)

2.流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,流的本质是数据传输,IO流就是用来处理设备间数据传输问题的。

流的分类: 
                  按流的方向:输入流,输出流 
                  按处理数据单位:字节流,字符流 
                  按角色的不同:节点流(直接作用在文件),处理流

字节流/字符流抽象类节点流缓冲流(处理流之一)传输内容
输入流字符流ReaderFileReaderBufferedReader文本文件
输入流字节流InputStreamFileInputStreamBufferedInputStream文本文件,图片,视频等
输出流字符流WriterFileWriterBufferedWriter文本文件
输出流字节流OutputStreamFileOutputStreamBufferedOutputStream文本文件,图片,视频等

注:二进制文件必须用字节流,例如图片,音频,视频等(windows记事本打开乱码的文件)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值