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

摘要:

您好!当您打开此文件时,意味着你再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", "[email protected]");
			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流系列文章暂时先告一段落,如遇到什么问题欢迎在下方留言讨论。

猜你喜欢

转载自blog.csdn.net/jiangyi_1612101_03/article/details/84672376