首页 > 代码库 > IO(一)

IO(一)

文件相关

 

package com.bjsxt.io.file;import java.io.File;/** * 两个常量 * 1、路径分隔符  ; * 2、名称分隔符 /(windows)  /(linux 等) *  *  * @author Administrator * */public class Demo01 {    /**     * @param args     */    public static void main(String[] args) {        System.out.println(File.pathSeparator);        System.out.println(File.separator);        //路径表示形式        String path ="E:\\xp\\test\\2.jpg";        path="E:"+File.separator+"xp"+File.separator+"test"+File.separator+"2.jpg";        //推荐方式        path="E:/xp/test/2.jpg";    }}

 

 

package com.bjsxt.io.file;import java.io.File;/** * 相对路径与绝对路径构造 File对象 * 1、相对路径    File(String parent, String child)  ==>File("E:/xp/test","2.jpg")    File(File parent, String child)     ==> File(new File("E:/xp/test"),"2.jpg")    2、绝对路径    File(String name); * @author Administrator * */public class Demo02 {    /**     * @param args     */    public static void main(String[] args) {        String parentPath ="E:/xp/test";        String name ="2.jpg";        //相对路径        File src =http://www.mamicode.com/new File(parentPath,name);        src =new File(new File(parentPath),name);        //输出        System.out.println(src.getName());        System.out.println(src.getPath());        //绝对路径        src =http://www.mamicode.com/new File("E:/xp/test/2.jpg");        System.out.println(src.getName());        System.out.println(src.getPath());        //没有盘符: 以 user.dir构建        src =http://www.mamicode.com/new File("test.txt");        src =new File(".");        System.out.println(src.getName());        System.out.println(src.getPath());        System.out.println(src.getAbsolutePath());    }}

 

 

package com.bjsxt.io.file;import java.io.File;import java.io.IOException;import org.junit.Test;/** * 常用方法:1、文件名getName() 文件名、路径名getPath()路径名getAbsoluteFile() 绝对路径所对应的File对象getAbsolutePath() 绝对路径名getParent() 父目录 ,相对路径的父目录,可能为null 如. 删除本身后的结果2、判断信息exists()canWrite()canRead()isFile()isDirectory()isAbsolute():消除平台差异,ie以盘符开头,其他以/开头3、长度 字节数  不能读取文件夹的长度length()4、创建、删除createNewFile() 不存在创建新文件,存在返回falsedelete() 删除文件static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录)deleteOnExit() 退出虚拟机删除,常用于删除临时文件 * @author Administrator * */public class Demo03 {    /**     * @param args     */    public static void main(String[] args) {        try {            test3();        } catch (IOException e) {            e.printStackTrace();            System.out.println("文件操作失败");        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        }    //创建删除文件    public static void test3() throws IOException, InterruptedException{        //createNewFile() 不存在创建新文件        //String path="E:/xp/test/con"; //con系统关键字        String path="E:/xp/test/200.jpg";        //String path="E:/xp/test/1.jpg";        File src =http://www.mamicode.com/new File(path);        if(!src.exists()){            boolean flag =src.createNewFile();            System.out.println(flag?"成功":"失败");        }                //删除文件        boolean flag =src.delete();        System.out.println(flag?"成功":"失败");                        //static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间        //static createTempFile(前缀3个字节长,后缀默认.temp,目录)        File temp= File.createTempFile("tes", ".temp",new File("e:/xp/test"));                Thread.sleep(10000);                temp.deleteOnExit(); //退出即删除            }            //2、判断信息    //3、长度 length()    @Test    public void test2(){        //String path ="2.txt";        String path="E:/xp/test/200.jpg";        //String path="E:/xp/test/200.jpg";        File src =http://www.mamicode.com/new File(path);        //是否存在        System.out.println("文件是否存在:"+src.exists());        //是否可读 写 canWrite() canRead()        System.out.println("文件是否可写"+src.canWrite());        System.out.println("============");        //isFile()        //isDirectory()        if(src.isFile()){            System.out.println("文件");        }else if(src.isDirectory()){                        System.out.println("文件夹");        }else{            System.out.println("文件不存在");        }                System.out.println("是否为绝对路径"+src.isAbsolute());        System.out.println("长度为:"+src.length());            }    //1、名称    @Test    public void test1(){        //File src =http://www.mamicode.com/new File("E:/xp/test/2.jpg");        //建立联系        File src =http://www.mamicode.com/new File("2.txt");        System.out.println(src.getName()); //返回名称        System.out.println(src.getPath()); //如果是绝对路径,返回完整路径,否则相对路径        System.out.println(src.getAbsolutePath());//返回绝对路径        System.out.println(src.getParent());//返回上一级目录,如果是相对,返回null    }}

 

package com.bjsxt.io.file;import java.io.File;import java.io.FilenameFilter;/** * 5、操作目录mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败mkdirs() 创建目录,如果父目录链不存在一同创建list() 文件|目录 名字符串形式listFiles()static listRoots() 根路径 * @author Administrator * */public class Demo04 {    /**     * @param args     */    public static void main(String[] args) {        String path ="E:/xp/test/";        File src =new File(path); //文件夹        if(src.isDirectory()){ //存在并且为目录            System.out.println("======子目录|文件名===");            String[] subNames =src.list();                        for(String temp:subNames){                System.out.println(temp);            }            System.out.println("=====子目录|文件File对象====");            File[] subFiles =src.listFiles();            for(File temp:subFiles){                System.out.println(temp.getAbsolutePath());            }            System.out.println("=====子文件.java对象====");            //命令设计模式            subFiles =src.listFiles(new FilenameFilter(){                                    @Override                /**                 * dir 代表src                 */                public boolean accept(File dir, String name) {                    //System.out.println(dir.getAbsolutePath());                    return  new File(dir,name).isFile()&&name.endsWith(".java");                }                            });            for(File temp:subFiles){                System.out.println(temp.getAbsolutePath());            }                                }    }    public static void test1(){        String path ="E:/xp/test/parent/p/test";        File src =new File(path);        //src.mkdir();        src.mkdirs();    }}

 

package com.bjsxt.io.file;import java.io.File;import java.io.FilenameFilter;/** * 5、操作目录mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败mkdirs() 创建目录,如果父目录链不存在一同创建list() 文件|目录 名字符串形式listFiles()static listRoots() 根路径 * @author Administrator * */public class Demo04 {    /**     * @param args     */    public static void main(String[] args) {        String path ="E:/xp/test/";        File src =new File(path); //文件夹        if(src.isDirectory()){ //存在并且为目录            System.out.println("======子目录|文件名===");            String[] subNames =src.list();                        for(String temp:subNames){                System.out.println(temp);            }            System.out.println("=====子目录|文件File对象====");            File[] subFiles =src.listFiles();            for(File temp:subFiles){                System.out.println(temp.getAbsolutePath());            }            System.out.println("=====子文件.java对象====");            //命令设计模式            subFiles =src.listFiles(new FilenameFilter(){                                    @Override                /**                 * dir 代表src                 */                public boolean accept(File dir, String name) {                    //System.out.println(dir.getAbsolutePath());                    return  new File(dir,name).isFile()&&name.endsWith(".java");                }                            });            for(File temp:subFiles){                System.out.println(temp.getAbsolutePath());            }                                }    }    public static void test1(){        String path ="E:/xp/test/parent/p/test";        File src =new File(path);        //src.mkdir();        src.mkdirs();    }}

 

package com.bjsxt.io.file;import java.io.File;import java.util.Arrays;/** * 输出子孙级目录|文件的名称(绝对路径) * 1、listFiles() * 2、递归 *  * static listRoots() 根路径 * @author Administrator * */public class Demo05 {    /**     * @param args     */    public static void main(String[] args) {        String path ="E:/xp/test";        File parent =new File(path);        //printName(parent);                File[] roots =File.listRoots();        System.out.println(Arrays.toString(roots));        for(File temp:roots){            //printName(temp);                    }    }    /**     * 输出路径     */    public static void printName(File src){        if(null==src || !src.exists()){            return ;        }        System.out.println(src.getAbsolutePath());        if(src.isDirectory()){ //文件夹            for(File sub:src.listFiles()){                printName(sub);            }                    }    }}

IO流:

image

 

package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;/** * 文件的读取 * 1、建立联系   File对象    2、选择流     文件输入流  InputStream FileInputStream    3、操作  : byte[] car =new byte[1024];  +read+读取大小              输出    4、释放资源 :关闭 * @author Administrator * */public class Demo01 {    /**     * @param args     */    public static void main(String[] args) {        //1、建立联系   File对象        File src =http://www.mamicode.com/new File("e:/xp/test/a.txt");        //2、选择流        InputStream is =null; //提升作用域        try {            is =new FileInputStream(src);            //3、操作 不断读取 缓冲数组            byte[] car =new byte[1024];            int len =0; //接收 实际读取大小            //循环读取            StringBuilder sb =new StringBuilder();            while(-1!=(len=is.read(car))){                //输出  字节数组转成字符串                String info =new String(car,0,len);                sb.append(info);            }            System.out.println(sb.toString());                                } catch (FileNotFoundException e) {            e.printStackTrace();            System.out.println("文件不存在");        } catch (IOException e) {            e.printStackTrace();            System.out.println("读取文件失败");        }finally{            try {                //4、释放资源                if (null != is) {                    is.close();                }            } catch (Exception e2) {                System.out.println("关闭文件输入流失败");            }        }    }}
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;/** * 写出文件1、建立联系   File对象  目的地2、选择流     文件输出流  OutputStream FileOutputStream3、操作  :  write() +flush4、释放资源 :关闭 * @author Administrator * */public class Demo02 {    /**     * @param args     */    public static void main(String[] args) {        //1、建立联系   File对象  目的地        File dest =new File("e:/xp/test/test.txt");        //2、选择流   文件输出流  OutputStream FileOutputStream        OutputStream os =null;        //以追加形式 写出文件 必须为true 否则为覆盖        try {            os =new FileOutputStream(dest,true);            //3、操作            String str="bjsxt is very good \r\n";            //字符串转字节数组            byte[] data =http://www.mamicode.com/str.getBytes();            os.write(data,0,data.length);                        os.flush(); //强制刷新出去        } catch (FileNotFoundException e) {            e.printStackTrace();            System.out.println("文件未找到");        } catch (IOException e) {            e.printStackTrace();            System.out.println("文件写出失败");        }finally{            //4、释放资源 :关闭            try {                if (null != os) {                    os.close();                }            } catch (Exception e2) {                System.out.println("关闭输出流失败");            }        }    }}
package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** 1、建立联系   File对象   源头 目的地2、选择流          文件输入流  InputStream FileInputStream      文件输出流  OutputStream FileOutputStream3、操作  :  拷贝     byte[] flush =new byte[1024];      int len =0;      while(-1!=(len=输入流.read(flush))){           输出流.write(flush,0,len)      }             输出流.flush4、释放资源 :关闭 两个流   * @author Administrator * */public class CopyFileDemo {    /**     * @param args     * @throws FileNotFoundException      */    public static void main(String[] args) {        String src ="E:/xp/test";        String dest="e:/xp/test/4.jpg";        try {            copyFile(src,dest);        } catch (FileNotFoundException e) {            e.printStackTrace();            System.out.println("文件不存在");        } catch (IOException e) {            e.printStackTrace();            System.out.println("拷贝文件失败|关闭流失败");        }    }    /**     * 文件的拷贝     * @param  源文件路径     * @param  目录文件路径     * @throws FileNotFoundException,IOException     * @return      */        public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException {            //1、建立联系 源(存在且为文件) +目的地(文件可以不存在)              File src =http://www.mamicode.com/new File(srcPath);            File dest =new File(destPath);            if(! src.isFile()){ //不是文件或者为null                System.out.println("只能拷贝文件");                throw new IOException("只能拷贝文件");            }            //2、选择流            InputStream is =new FileInputStream(src);            OutputStream os =new FileOutputStream(dest);            //3、文件拷贝   循环+读取+写出            byte[] flush =new byte[1024];            int len =0;            //读取            while(-1!=(len=is.read(flush))){                //写出                os.write(flush, 0, len);            }            os.flush(); //强制刷出                        //关闭流            os.close();            is.close();        }}
package com.bjsxt.io.byteIO;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * 文件操作 * 1、文件拷贝 * 2、文件夹拷贝  拒绝自己拷贝给自己 * @author Administrator * */public class FileUtil {    /**     * 拷贝文件夹     * @param src 源路径     * @param dest 目标路径     * @throws IOException      * @throws FileNotFoundException      */    public static void copyDir(String  srcPath,String destPath) throws FileNotFoundException, IOException{        //拒绝自己拷贝给自己        if(srcPath.equals(destPath)){            return ;        }        File src=new File(srcPath);        File dest =new File(destPath);        copyDir(src,dest);            }                /**     * 拷贝文件夹     * @param src 源File对象     * @param dest 目标File对象     * @throws IOException      * @throws FileNotFoundException      */    public static void copyDir(File src,File dest) throws FileNotFoundException, IOException{        if(src.isDirectory()){ //文件夹            dest =new File(dest,src.getName());            if(dest.getAbsolutePath().contains(src.getAbsolutePath())){                System.out.println("父目录不能拷贝到子目录中");                return;            }        }                copyDirDetail(src,dest);    }        /**     * 拷贝文件夹细节     * @param src     * @param dest     */    public static void copyDirDetail(File src,File dest) throws FileNotFoundException,IOException{        if(src.isFile()){ //文件            try {                FileUtil.copyFile(src, dest);            } catch (FileNotFoundException e) {                //e.printStackTrace();                throw e;            } catch (IOException e) {                //e.printStackTrace();                throw e;            }        }else if(src.isDirectory()){ //文件夹            //确保目标文件夹存在            dest.mkdirs();            //获取下一级目录|文件            for(File sub:src.listFiles()){                copyDirDetail(sub,new File(dest,sub.getName()));            }        }    }            /**     * 文件的拷贝     * @param  源文件路径     * @param  目录文件路径     * @throws FileNotFoundException,IOException     * @return      */    public static void copyFile(String srcPath,String destPath) throws FileNotFoundException,IOException {        //1、建立联系 源(存在且为文件) +目的地(文件可以不存在)         copyFile(new File(srcPath),new File(destPath));    }    /**     * 文件的拷贝     * @param  源文件File对象     * @param  目录文件File对象     * @throws FileNotFoundException,IOException     * @return      */    public static void copyFile(File src,File dest) throws FileNotFoundException,IOException {        if(! src.isFile()){ //不是文件或者为null            System.out.println("只能拷贝文件");            throw new IOException("只能拷贝文件");        }        //dest为已经存在的文件夹,不能建立于文件夹同名的文件        if(dest.isDirectory()){            System.out.println(dest.getAbsolutePath()+"不能建立于文件夹同名的文件");            throw new IOException(dest.getAbsolutePath()+"不能建立于文件夹同名的文件");        }                        //2、选择流        InputStream is =new BufferedInputStream(new FileInputStream(src));        OutputStream os =new BufferedOutputStream(new FileOutputStream(dest));        //3、文件拷贝   循环+读取+写出        byte[] flush =new byte[1024];        int len =0;        //读取        while(-1!=(len=is.read(flush))){            //写出            os.write(flush, 0, len);        }        os.flush(); //强制刷出                //关闭流        os.close();        is.close();    }}

 

 

package com.bjsxt.io.byteIO;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;/** * 文件夹的拷贝 * 1、文件 赋值  copyFile * 2、文件 创建 mkdirs() * 3、递归查找子孙级 *  * @author Administrator * */public class CopyDir {    /**     * @param args     */    public static void main(String[] args) {        //源目录        String srcPath="E:/xp/test/a";             //目标目录        String destPath="E:/xp/test/a/b";        try {            FileUtil.copyDir(srcPath,destPath);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }            }    /**     * 拷贝文件夹     * @param src 源路径     * @param dest 目标路径     */    public static void copyDir(String  srcPath,String destPath){        File src=new File(srcPath);        File dest =new File(destPath);        copyDir(src,dest);            }                /**     * 拷贝文件夹     * @param src 源File对象     * @param dest 目标File对象     */    public static void copyDir(File src,File dest){        if(src.isDirectory()){ //文件夹            dest =new File(dest,src.getName());                    }                copyDirDetail(src,dest);    }        /**     * 拷贝文件夹细节     * @param src     * @param dest     */    public static void copyDirDetail(File src,File dest){        if(src.isFile()){ //文件            try {                FileUtil.copyFile(src, dest);            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }        }else if(src.isDirectory()){ //文件夹            //确保目标文件夹存在            dest.mkdirs();            //获取下一级目录|文件            for(File sub:src.listFiles()){                copyDirDetail(sub,new File(dest,sub.getName()));            }        }    }        }

 

package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;/** * 纯文本读取 * @author Administrator * */public class Demo01 {    /**     * @param args     */    public static void main(String[] args) {        //创建源        File src =http://www.mamicode.com/new File("E:/xp/test/a.txt");        //选择流        Reader reader =null;        try {            reader =new FileReader(src);            //读取操作            char[] flush =new char[1024];            int len =0;            while(-1!=(len=reader.read(flush))){                //字符数组转成 字符串                String str =new String(flush,0,len);                System.out.println(str);            }        } catch (FileNotFoundException e) {            e.printStackTrace();            System.out.println("源文件不存在");        } catch (IOException e) {            e.printStackTrace();            System.out.println("文件读取失败");        }finally{            try {                if (null != reader) {                    reader.close();                }            } catch (Exception e2) {            }        }    }}

 

package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;/** * 写出文件 * @author Administrator * */public class Demo02 {    /**     * @param args     */    public static void main(String[] args) {        //创建源        File dest =new File("e:/xp/test/char.txt");        //选择流        Writer wr =null;        try {            //追加文件,而不是覆盖文件            wr =new FileWriter(dest);            //写出            String msg ="追加.....锄禾日当午\r\n码农真辛苦\r\n一本小破书\r\n一读一上午";            wr.write(msg);            wr.append("倒萨发了看电视剧 ");                        wr.flush();        } catch (FileNotFoundException e) {            e.printStackTrace();        }catch (IOException e) {            e.printStackTrace();        }finally{            try {                if (null != wr) {                    wr.close();                }            } catch (Exception e2) {            }        }    }}

 

package com.bjsxt.io.charIO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;/** * 纯文本拷贝 * @author Administrator * */public class CopyFileDemo {    /**     * @param args     */    public static void main(String[] args) {        //创建源 仅限于 字符的纯文本        File src =http://www.mamicode.com/new File("E:/xp/test/Demo03.java");        File dest =new File("e:/xp/test/char.txt");        //选择流        Reader reader =null;                Writer wr =null;        try {            reader =new FileReader(src);            wr =new FileWriter(dest);            //读取操作            char[] flush =new char[1024];            int len =0;            while(-1!=(len=reader.read(flush))){                wr.write(flush, 0, len);            }            wr.flush();//强制刷出        } catch (FileNotFoundException e) {            e.printStackTrace();            System.out.println("源文件不存在");        } catch (IOException e) {            e.printStackTrace();            System.out.println("文件读取失败");        }finally{            try {                if (null != wr) {                    wr.close();                }            } catch (Exception e2) {            }            try {                if (null != reader) {                    reader.close();                }            } catch (Exception e2) {            }        }        }}

IO(一)