JavaSE的IO流系列教程(4-4)——FileUtils工具类和Properties类

26 篇文章 0 订阅
17 篇文章 0 订阅

摘要:

您好!当您打开此文件时,意味着你再IO流知识上出现了欠缺。如果你想仔细学习一下JavaSE的IO流部分知识,可以仔细阅读下面的知识点。
本文为系列文章的第四篇:
第一篇:JavaSE的IO流系列教程(1-4)—— File类的创建文件和获取文件目录
第二篇:JavaSE的IO流系列教程(2-4)——OutputStream类和InputStream类
第三篇:JavaSE的IO流系列教程(3-4)——BufferedStream类和BufferedReader类



引言:


FileUtils工具类的使用:

  1. 第一步导入commons-io-2.4.jar包
    commons-io-2.4.jar下载:
    解压压缩包,找到里面的 commons-io-2.4.jar,“Ctrl+C",打开Eclipse找到你所建立的工程。
    在这里插入图片描述
  2. 添加Path
    在这里插入图片描述
  3. 使用FilenameUtils类的方法,
    导包时导入import org.apache.commons.io.FilenameUtils;

FileUtils类的使用案例(获取和判断):
		/*
		 * FilenameUtils类的方法
		 * Static boolean isExtension(String filename,String extension)
		 * 判断文件后缀名是不是extension
		 */
		public static void function_2(){
			System.out.println(FilenameUtils.isExtension("Demo.java", "java"));
		}
		/*
		 * FilenameUtils类的方法
		 * static String getName(String filename)
		 * 获取文件名
		 */
		public static void function_1(){
			System.out.println(FilenameUtils.getName("D:\\javademo\\1.txt"));
		}
		
		/*
		 * FilenameUtils类的方法
		 * static String getExtension(String filename)
		 * 获取文件的拓展名
		 */
		public static void function(){
			System.out.println(FilenameUtils.getExtension("abc.java"));
		}
FileUtils类的使用案例(复制文本):
		/*
		 * FileUtils工具类的方法
		 * static void cpoyDirectoryToDirectory(File src,File desc)
		 * 复制文件夹
		 */
		public static void function_3() throws IOException{
			FileUtils.copyDirectoryToDirectory(new File("D:\\javademo\\abc"), new File("D:\\javademo\\b"));
		}
		
		/*
		 * FileUtils工具类的方法
		 * static void copyFile(File src,File desc)
		 * 复制文件
		 */
		public static void function_2() throws IOException{
			FileUtils.copyFile(new File("D:\\javademo\\1.png"),new File("D:\\javademo\\k.png") );
		}
		/*
		 * FileUtils工具类的方法
		 * static void writeStringToFile(File src,String date)
		 * 将字符串直接写入文件中
		 */
		public static void function_1() throws IOException{
			FileUtils.writeStringToFile(new File("D:\\javademo\\1.txt"),"我爱java编程");
		}
		/*
		 * FileUtils工具类的方法
		 *static  String readFileToString(File src)读取文本,返回字符串
		 *
		 */
		public static void function() throws IOException{
			System.out.println(FileUtils.readFileToString(new File("D:\\javademo\\1.txt")));
		}

Properties类

Properties类和IO对象结合使用,实现数据的持久储存
	/*
		 * Properties集合特有的方法store
		 * store(OutputStream out)
		 * store(Writer w)
		 * 传递任意字节或则字符输出流
		 * 将集合中的键值对写回到文件中保存
		 */
		public static void function_2() throws IOException{
			Properties pro = new Properties();
			pro.setProperty("name", "zhangsan");
			pro.setProperty("age", "31");
			pro.setProperty("email", "mymial@sina.com");
			FileWriter fw = new FileWriter("D:\\javademo\\1.properties");
			//键值对,存入文件,使用集合的方法store传递字符输出流
			pro.store(fw, "this is my fristTXTstore");
			fw.close();
			
		}
		/*
		 * Properties集合特有的方法load
		 * load(InputStream in)
		 * load(Reader r)
		 * 传递任意的字节或者字符输入流
		 * 流对象读取文件中的键值对,保存到集合
		 */
		public static void function_1() throws IOException{
			Properties pro = new Properties();
			FileReader fr = new FileReader("D:\\javaDemo\\1.properties");
			//调用集合的方法load,传递字符输出流
			pro.load(fr);
			fr.close();
			System.out.println(pro);
		}


实现对象的序列化和反序列化

  1. 创建序列化对象
public class Person implements Serializable {
		
		/**
		 * 防止系列号冲突,下列系列号由Eclipse自动生成,请不要修改下列号码
		 * serialVersionUID = 2125396509151169369L
		 */
		 //在写之前不要自己写下面这一行代码,由Eclipse提示你写,这样会避免序列号重复。
		private static final long serialVersionUID = 2125396509151169369L;
		private String name;
		//阻止成员变量序列化transient
		public  /* transient */ int  age;
		//静态不能序列化,
		//private static String gender;
		
		public Person(String name, int age) {
			super();
			this.name = name;
			this.age = age;
		}
		public Person(){
			
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		@Override
		public String toString() {
			return "Person [name=" + name + ", age=" + age + "]";
		}
		
}
  1. ObjectOutPutStream类 实现序列化和ObjectInputStream 类实现反序列化
实现序列化:
	public static void writeObject() throws IOException{
	//创建字节输出流,封装文件
	FileOutputStream fos = new FileOutputStream("D:\\javademo\\person.txt");
	//创建写出对象的序列化流的对象,构造方法传递字节输出流
	ObjectOutputStream oos = new ObjectOutputStream(fos);
	Person p = new Person("张三",25);
	oos.writeObject(p);
	oos.close();
	}
实现反序列化:
	public static void readObject() throws IOException, ClassNotFoundException{
	FileInputStream fis = new FileInputStream("D:\\javademo\\person.txt");
	ObjectInputStream ois = new ObjectInputStream(fis);
			
	Object obj = ois.readObject();
	ois.close();
	}

IO流系列文章暂时先告一段落,如遇到什么问题欢迎在下方留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值