首页 > 其他 > 详细

IO(一)

时间:2014-10-03 19:50:55      阅读:297      评论:0      收藏:0      [点我收藏+]

文件相关

 

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流:

bubuko.com,布布扣

 

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 \r\n";
            //字符串转字节数组
            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 ="追加.....锄禾日当午\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 =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(一)

原文:http://www.cnblogs.com/sunhan/p/4005226.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!