黑马程序员_14_IO流文件类

 ------- android培训java培训、期待与您交流! ----------

IO流<Input Output>一些知识总结:

IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式。

流按照操作数据分为两种:
     1:字节流与字符流
       字节流的抽象基类是InputStream OutputStream
流按照流向分为:
     1:输入流与输出流
       字符流的抽象基类是Reader  Writer
IO流解决的问题:主要解决的是设备与设备之间的数据传输问题。比如:内存---硬盘 , 硬盘---内存

IO流的应用场景:读取文件,导出报表,上传照片。

那么操作文件,让我们先来了解File<文件类>一些常用方法:
File可以描述一个文件或者文件夹。
一:常用的构造方法:
      File(String pathname) 指定一个文件的路径,然后创建一个File对象。
      File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
      路径问题:绝对路径---文件的具体路径信息,绝对路径一般都是以盘符开头的路径。
      相对路径:文件资源相对于程序当前的路径。注意,如果当前程序所在的路径与操作的资源文件不是在同一个盘下,那么不准写相对路径。
      . 当前所在的路径。
      ..上一级路径。
二:常用创建方法:
createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs()在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest)重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。

public class Demo2 {

	public static void main(String[] args) throws IOException {
		File file = new File("F:\\a.txt");
		//createNewFile() 创建一个文件的对象 的。  如果指定的路径已经存在了该文件,那么该方法不会再创建该文件了,
		System.out.println("创建文件成功吗?"+ file.createNewFile()); 
		File dir = new File("F:\\aa\\bb");
		// mkdir 创建一个文件夹。如果指定文件夹目录已经存在了,那么不会再创建了。 只能用于创建单级目录。	
		System.out.println("创建文件夹成功吗?"+ dir.mkdir());  
		System.out.println("创建文件夹成功吗?"+ dir.mkdirs());  //创建多级目录。
		
		File file2 = new File("F:\\a.txt");
		File destFile = new File("F:\\b.txt");
		file2.renameTo(destFile); 
		
		File file3= new File("F:\\bb");
		File destFile2 = new File("E:\\aa");
		// renameTo 如果目标文件与源文件是位于同一级目录renameTo的作用是重名名,可以操作文件也可以操作文件夹。    
		System.out.println("操作成功吗?"+ file2.renameTo(destFile2));  
		// renameTo 如果目标文件与源文件是位于不同的目录下,那么renameTo的功能就是剪切的功能,但是还可以对剪切的文件进行重命名 。  如果是剪切功能 的时候,不能用于操作文件夹。
		

三:删除和判断:

删除:
delete()删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除

判断:
exists()文件或文件夹是否存在。
isFile()是否是一个文件,如果不存在,则始终为false。
isDirectory()是否是一个目录,如果不存在,则始终为false。

isHidden()是否是一个隐藏的文件或是否是隐藏的目录。
isAbsolute()测试此抽象路径名是否为绝对路径名。

public class Demo3 {
	
	public static void main(String[] args) throws Exception {
		
		//删除
		File file = new File("F:\\a.txt");
		// delete 删除一个文件或者 是文件夹  , 用于删除文件夹的时候,文件夹必须 是一个空的文件夹。
		System.out.println("删除成功吗?"+ file.delete());  
		Thread.sleep(5000);
		 //删除一个文件或者是文件夹。   jvm退出的时候删除文件。
		file.deleteOnExit();  //file.deleteOnExit(); 
		System.out.println("哈哈");
		
		File file2 = new File("..\\..\\a.txt");
		 //判断File是一个文件对象。
		System.out.println("是一个文件吗?"+ file2.isFile()); 
		 // isDirectory 判断是否为文件夹。
		System.out.println("是文件夹吗?"+ file2.isDirectory()); 
		 //isHidden 判断是否为隐藏文件。
		System.out.println("是隐藏文件吗?"+ file2.isHidden()); 
		System.out.println("是绝对路吗?"+ file2.isAbsolute());
	}
}


四:获取方法:
getName()获取文件或文件夹的名称,不包含上级路径。
getPath()返回绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系

length()获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()获取最后一次被修改的时间。

public class Demo4 {
	
	public static void main(String[] args) {
		
		File file = new File("F:\\a.txt");
		// getName 获取文件名
		System.out.println("文件名:"+ file.getName()); 
		System.out.println("绝对路径:" + file.getPath());  // getPath  返回绝对路径,
		// getAbsolutePath 返回文件的绝对路, 绝对路径 = 当前路径+ 你创建File对象传入的字符串信息。
		System.out.println("绝对路径:"+ file.getAbsolutePath()); 
		System.out.println("文件的大小:"+ file.length());  // length 返回文件 的大小,返回 的是以字节为单位 的。
		System.out.println("父级目录路径:"+ file.getParent());
		
		//毫秒转成一个Date,然后再转成一个指定格式 的日期字符串。
		Date date = new Date(file.lastModified());  //返回的是一个毫秒数。
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		System.out.println("最后一次的修改时间是:" + dateFormat.format(date));
	}
}

五:与文件夹相关的方法:

staic File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
list()返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles()返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。

import java.io.File;

public class Demo1 {
	public static void main(String[] args) {
		File dir =  new File("I:\\");
		listFomatFile(dir);
	}
	//列出指定目录中所有的子文件名与所有的子目录名,要求目录名与文件名分开列出
		public static void listFomatFile(File dir){
			File[] files = dir.listFiles();
			System.out.println("子文件:");
			for(File file : files){
				if(file.isFile()){
					System.out.println("\t"+ file.getName());
				}
			}
			System.out.println("子目录:");
			for(File file : files){
				if(file.isDirectory()){
					System.out.println("\t"+ file.getName());
				}
			}
		}
}



                                           ------- android培训java培训、期待与您交流! ----------



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值