黑马程序员——Java IO总结(三)

来源:互联网 发布:java utf8编码转换gbk 编辑:程序博客网 时间:2024/05/21 19:33

黑马程序员——Java IO总结(三)


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

一、File类

l  用来将文件或文件夹封装成对象

l  方便对文件或文件夹的属性信息进行操作

l  File对象可以作为参数传递给流的构造函数

l  了解File类的常用方法

boolean createNewFile(): 在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象创建文件时,若文件存在,会覆盖

boolean mkdir(): 创建目录

boolean mkdirs(): 创建多级目录

boolean delete(): 删除失败返回false

void deleteOnExit(): 程序退出时删除

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

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

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

判断File对象是否为文件或目录时,一定要先判断Fild对象是否存在

String getName()

String getPath()

String getAbsolutePath()

String getParent()

l  实例:列出指定目录下的所有文件或文件夹,包含子目录的内容。

import java.io.File;// 深度优先搜索 DFSpublic class ListFiles {    public static void main(String[] args) {        listFiles(new File("c:\\windows"));    }     public static void listFiles(File dir) {        File[] files = dir.listFiles();         for (File file : files) {            System.out.println(file);            if(file.isDirectory())                listFiles(file);        }    }}


l  实例:删除带内容的目录

import java.io.File; public class RemoveDir {    public static void main(String[] args) {        removeDir(new File("d:/bb"));    }     public static void removeDir(File dir) {        File[] files = dir.listFiles();         for (File file : files) {            if (file.isDirectory())                removeDir(file);            else                System.out.println("【文  件】" + file.toString() + ": "                        + file.delete());         }        System.out.println("【文件夹】" + dir.toString() + ": " + dir.delete());    }}


l  实例:将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中

import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List; public class JavaFileList {    public static void main(String[] args) {        File dir = new File("F:\\Code\\Java\\heiMa");        List<File> list = new ArrayList<File>();         javaFileList(list, dir);         write2File(list);    }     public static void javaFileList(List<File> list, File dir) {        File[] files = dir.listFiles();         for (File file : files) {            if (file.isDirectory())                javaFileList(list, file);            else {                if (file.getName().endsWith(".java"))                    list.add(file);            }        }    }     public static void write2File(List<File> list) {        BufferedWriter bw = null;        try {            bw = new BufferedWriter(new FileWriter("JavaFiles.txt"));             for (File file : list) {                bw.write(file.getAbsolutePath());                System.out.println(file.getAbsolutePath());                bw.newLine();                bw.flush();            }        } catch (IOException e) {            throw new RuntimeException(e);        } finally {            try {                if (bw != null)                    bw.close();            } catch (IOException e) {                throw new RuntimeException(e);            }        }    }}


二、Properties类

Properties是HashTable的子类,也就是说它具务Map集合的特点。而且它里面存储的键值对都有是字符串。Properties类是集合中与IO技术相结合的集合容器。它的特点:可以用于键值对形式的配置文件。

l  实例:合并流

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStream;import java.util.Vector; public class SequenceStreamDemo {    public static void main(String[] args) throws IOException {        Vector<FileInputStream> v=new Vector<FileInputStream>();        v.add(new FileInputStream("d:\\1.txt"));        v.add(new FileInputStream("d:\\2.txt"));        v.add(new FileInputStream("d:\\3.txt"));               SequenceInputStream sis=new SequenceInputStream(v.elements());               FileOutputStream fos=new FileOutputStream("d:\\4.txt");               byte[] b=new byte[1024];        int len=0;               while((len=sis.read(b))!=-1){            fos.write(b, 0, len);        }               fos.close();        sis.close();    }}


l  实例:文件分割与合并

import java.io.*;import java.util.*; public class SplitFile {    public static void main(String[] args) throws IOException {        // splitFile();        mergeFile();    }     public static void mergeFile() throws IOException {        List<InputStream> list = new ArrayList<InputStream>();        for (int i = 1; i < 4; i++) {            list.add(new FileInputStream("d:\\split\\" + i + ".part"));        }         final Iterator<InputStream> it = list.iterator();         Enumeration<InputStream> e = newEnumeration<InputStream>() {             @Override            public InputStream nextElement() {                return it.next();            }             @Override            public boolean hasMoreElements() {                return it.hasNext();            }        };         SequenceInputStream sis = new SequenceInputStream(e);        FileOutputStream fos = new FileOutputStream("d:\\merge.bmp");         byte[] b = new byte[1024 * 1024];        int len = 0;         while ((len = sis.read(b)) != -1) {            fos.write(b, 0, len);        }         sis.close();        fos.close();    }     public static void splitFile() throws IOException {        FileInputStream fis = new FileInputStream("d:\\1.bmp");        FileOutputStream fos = null;         byte[] b = new byte[1024 * 1024];        int len = 0;        int count = 1;         while ((len = fis.read(b)) != -1) {            fos = new FileOutputStream("d:\\split\\" + count++ + ".part");            fos.write(b, 0, len);            fos.close();        }         fis.close();    }}

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

详细请查看:http://edu.csdn.net/heima


 

 

 

 


原创粉丝点击