• 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 =new File(parentPath,name);
            src =new File(new File(parentPath),name);
            //输出
            System.out.println(src.getName());
            System.out.println(src.getPath());
            //绝对路径
            src =new File("E:/xp/test/2.jpg");
            System.out.println(src.getName());
            System.out.println(src.getPath());
            //没有盘符: 以 user.dir构建
            src =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() 不存在创建新文件,存在返回false
    delete() 删除文件
    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 =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 =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 =new File("E:/xp/test/2.jpg");
            //建立联系
            File src =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 =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 FileOutputStream
    3、操作  :  write() +flush
    4、释放资源 :关闭
     * @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 
    ";
                //字符串转字节数组
                byte[] data =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 FileOutputStream
    3、操作  :  拷贝
         byte[] flush =new byte[1024]; 
         int len =0;
          while(-1!=(len=输入流.read(flush))){  
             输出流.write(flush,0,len)
          }
                 输出流.flush
    4、释放资源 :关闭 两个流
     
     
     * @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 =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 =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 ="追加.....锄禾日当午
    码农真辛苦
    一本小破书
    一读一上午";
                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 =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) {
                }
            }
        
        }
    
    }
  • 相关阅读:
    8.ffmpeg-基础常用知识
    7.SwrContext音频重采样使用
    6.AVCodecContext和AVCodec
    5.AVStream和AVCodecParameters
    Discuz论坛禁止匿名发贴,却出现匿名发帖或回复?找不到发帖用户,DZ如何禁止匿名发帖修改教程
    在独立服务器上通过Ubuntu 18.04+apache2+php5.6+mysql5.7+discuz!x3.4搭建的论坛实现伪静态的正确方法
    [源码] 2200套微信小程序源码
    discuz论坛更换目录后出现头像无法显示/ucenter无法进入
    discuz 您的服务器不支持 CURL,这将会导致应用无法安装。请联系您的服务商或者网站技术人员
    Discuz在服务器配置安装时出现xml_parser_create()不支持
  • 原文地址:https://www.cnblogs.com/sunhan/p/4005226.html
Copyright © 2020-2023  润新知