Properties类
特点:
1、Hashtable的子类,map集合中的方法都可以用;
2、该集合没有泛型,键值都是字符串;
3、是一个可以持久化的属性集,键值可以存到集合中,也可存到持久化的设备上,键值的来源也可是持久化的设备;
4、有和流技术相结合的方法:
代码演示:
public static void main(String[] args) { Properties pro=new Properties(); //存数据 pro.setProperty("driver", "com.mysql.jdbc.driver"); pro.setProperty("username", "root"); pro.setProperty("password", "123456"); //取数据 //获取键集 Set<String> set= pro.stringPropertyNames(); for(String s:set){ System.out.println(s+"..."+pro.getProperty(s)); } } public class Demo02 { public static void main(String[] args) throws IOException { //从properties文件中读取键值对 Properties pro=new Properties(); FileInputStream fis=new FileInputStream("x:\test\demo1.properties"); pro.load(fis); fis.close(); Set<String> set=pro.stringPropertyNames(); //遍历 for(String s:set){ System.out.println(s+"..."+pro.getProperty(s)); } } public static void main(String[] args) throws IOException { //通过properties向文件中写键值对 //明确目的地 FileOutputStream fos=new FileOutputStream("x:\test\demo2.properties"); Properties pro=new Properties(); pro.setProperty("name", "xuezhiqian"); pro.setProperty("age", "34"); pro.store(fos, ""); }
序列化流与反序列化流:
读取对象的操作流ObjectInputStream:反序列化流
写入对象的操作流ObjectOutputStream:序列化流
特点:用于操作对象,可将对象写入到文件中,也可从文件中读取对象
代码演示:
//序列化 public class Demo01 { public static void main(String[] args) throws IOException { Person p=new Person("张三",18); //明确目的地 FileOutputStream fos=new FileOutputStream("x:\test\person.txt"); //创建序列化流 ObjectOutputStream oos=new ObjectOutputStream(fos); //写入对象 oos.writeObject(p); //释放资源 oos.close(); } 瞬态关键字 transient public class Person implements Serializable{ private String name; private transient int age;//瞬态关键字 private static final long serialVersionUID=123456789L; public Person(String name, int age) { super(); this.name = name; this.age = age; } 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 + "]"; }
//反序列化 public class Demo02 { public static void main(String[] args) throws IOException, ClassNotFoundException { //明确数据源 FileInputStream fis=new FileInputStream("x:\test\person.txt"); //创建反序列化对象 ObjectInputStream ois=new ObjectInputStream(fis); //反序列化 Object obj=ois.readObject(); Person p=(Person)obj; System.out.println(p); }
打印流:(怎么写的怎么打印;不会有IOExecption异常)
字节打印流:PrintStream;
字符打印流:PrintWriter;
方法:void print(String str):输出任意类型的数据
void println(String str):输出任意类型的数据,自动写入换行操作
代码演示:
public static void main(String[] args) throws IOException { //打印流复制 //明确数据源 FileReader fr=new FileReader("x:\test\test.txt"); BufferedReader br=new BufferedReader(fr); //明确数据目的 FileWriter fw=new FileWriter("x:\test\d\pig.txt"); PrintWriter pw=new PrintWriter(fw,true); //复制 String line=null; while((line=br.readLine())!=null){ pw.println(line); } //释放资源 br.close(); pw.close(); }
commons-IO:
导入jar包
FilenameUtils:用来处理文件
常用方法:
getExtension(String path):获取文件的扩展名
getName():获取文件名
isExtension(String filename,String ext):判断filename是否是ext后缀名
FileUtils:
常用方法:
readFileToString(File file):读取文件内容,返回一个String
writeString(File file,String content):将内容写到field中
copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
copyFile(File srcFile,File destFile);文件复制
代码演示:
public class Demo01 { public static void main(String[] args) throws IOException { //method1(); method2(); } public static void method1(){ //获取某文件扩展名 String name=FilenameUtils.getExtension("x:\test"); System.out.println(name); //获取某文件名 String filename=FilenameUtils.getName("x:\test\test.txt"); System.out.println(filename); //判断某文件是否以什么为结尾 boolean flag=FilenameUtils.isExtension("aaa.java", "java"); System.out.println(flag); } public static void method2() throws IOException{ FileUtils.copyDirectoryToDirectory(new File("x:\test"), new File("c:\")); } }