黑马程序员——Java基础——IO(三)

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一、File

File类是Java专门用来处理文件和目录的类,可以用它来表示某个文件的名字,也可以用它来表示目录里一组文件的名字,将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作

1.构造函数

		//第一种创建方法,通过将给定路径名字符串转换为抽象路径名来创建一个新 File实例
		File f1 = new File("E:\\workspace\\Practice\\src\\demo1.txt");
		//第二种创建方法,根据 parent路径名字符串和 child路径名字符串创建一个新 File实例
		File f2 = new File("E:\\workspace\\Practice\\src","demo2.txt");
		//第三种创建方法,根据 parent抽象路径名和 child 路径名字符串创建一个新 File实例
		File f = new File("E:\\workspace\\Practice\\src");
		File f3 = new File(f,"demo3.txt");
2.常用方法

1)创建

boolean createNewFile():在指定位置创建文件,如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false

boolean mkdir():创建此抽象路径名指定的目录。当且仅当已创建目录时,返回 true;否则返回 false

boolean mkdirs():创建多级目录。注意,此操作失败时也可能已经成功地创建了一部分必需的目录。

2)删除

boolean delete():删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。当且仅当成功删除文件或目录时,返回 true;否则返回 false

void deleteOnExit():在虚拟机终止时,删除此抽象路径名表示的文件或目录。

3)判断

boolean exists():判断文件是否存在.

boolean isFile():判断是否为一个文件

boolean isDirectory():判断是否为一个目录

boolean isHidden():判断指定文件是否是一个隐藏文件

boolean isAbsolute():判断指定路径名是否为绝对路径

4)获取信息

String getName():返回由此抽象路径名表示的文件或目录的名称

String getPath():将此抽象路径名转换为一个路径名字符串

String getParent():返回此抽象路径名父目录的路径名字符串

String getAbsolutePath():返回此抽象路径名的绝对路径名字符串

long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间

long length():返回由此抽象路径名表示的文件的长度

String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录

File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件

import java.io.File;
import java.io.IOException;

public class FileDemo {

	public static void main(String[] args) throws IOException {
		//创建File对象
		File f = new File("./src/demo.txt");
		//创建文件
		f.createNewFile();
		//判断信息
		System.out.println("该文件是否存在:"+f.exists());
		System.out.println("是否为一个文件:"+f.isFile());
		System.out.println("是否为目录:"+f.isDirectory());
		System.out.println("是否是隐藏文件:"+f.isHidden());
		System.out.println("是否为绝对路径:"+f.isHidden());
		//获取信息
		System.out.println("文件名称:"+f.getName());
		System.out.println("文件路径:"+f.getPath());
		System.out.println("父目录名称:"+f.getParent());
		System.out.println("绝对路径:"+f.getAbsolutePath());
		System.out.println("文件最后一次修改时间:"+f.lastModified());
		System.out.println("文件长度:"+f.length());
		
		
	}

}

3.递归

函数自身直接或者间接的调用到了自身。一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关,这时可以用递归来解决问题。

注意事项:

1)递归一定明确条件,否则容易死循环

2)注意递归的次数,尽量避免内存溢出

import java.io.File;
import java.io.IOException;


public class FileDemo {

	public static void main(String[] args) throws IOException {

		//创建File对象,指定目录
		File file = new File("."+File.separator+"src");
		
		showDir(file);
	}
	//获取目录下的所有文件名,因为目录中还有目录,还可以使用该功能,所以使用递归
	public static void showDir(File f)
	{
		System.out.println(f.getName());
		File[] files = f.listFiles();
		for(File file : files)
		{
			if(file.isDirectory())
				showDir(file);
			else
			{
				System.out.println(file.getName());
			}
		}
		
	}

}
二、Properties

Properties是hashtable的子类,该集合中的键和值都是字符串类型,用于操作以键值对形式存在的配置文件。集合中的数据可以保存到流中,或者从流中获取,是集合中和IO技术相结合的集合容器

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class PropertiesDemo{
       public static void main(String[] args) throws IOException {
    	   //定义Properties集合
            Properties prop = new Properties();
            //在集合中添加不同的元素
            prop.setProperty("zhangsan01", "10");
            prop.setProperty("zhangsan02", "10");
            prop.setProperty("zhangsan03", "10");
            prop.setProperty("zhangsan01", "12");
            prop.setProperty("zhangsan01", "11");
            
            //创建输出流对象,指向一个文件,将集合中元素存储到该文件中
            FileOutputStream fos = new FileOutputStream("demo.txt");
            prop.store(fos, "");
            fos.close();
            
            //创建输入流,指向一个文件,将文件中存储的集合键值对打印到控制台上
            BufferedReader br = new BufferedReader(new FileReader("demo.txt"));
            prop.load(br);
            
            String str = null ;

            while((str = br.readLine())!= null)
            {
            	String[] strs = str.split("=");
            	prop.setProperty(strs[0], strs[1]);
            }
            
            br.close();
            System.out.println(prop);
      }

}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值