package com.gic.haoban.manage.web.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

public class IOUtils {
	


	/**
	 * 6.编写一个程序，将D:\\java目录下的所有.java文件复制到D:\\jad目录下，
	 *   并将原来文件的扩展名从.java改为.jad。
	 */

//	public static class FileCopy {
//	    public static void main(String[] args) {
//
//	        File oriFile = new File("D:\\java");//原文件目录
//	        //file.exists():判断文件目录是否存在
//	        //file.isDirectory():判断文件目录是否是一个目录
//	        if(!(oriFile.exists() && oriFile.isDirectory())){
//	            System.out.println("文件目录不存在！");
//	        }
//
//	        File[] files = oriFile.listFiles(
//	            new FilenameFilter(){ //文件名称过滤器
//	                public boolean accept(File file, String name) {
//	                    return name.endsWith(".java");
//	                }
//	            }
//	        );
//	        System.out.println(files.length);//原文件个数
//
//	        File objFile = new File("D:\\jad");//目标文件目录
//	        //objFile.exists():判断目标文件目录是否存在
//	        //objFile.mkdir():创建目标文件目录
//	        if(!objFile.exists()){ 
//	            objFile.mkdir();
//	        } 
//
//	        //copyByte(files,objFile);
//	        copyChar(files,objFile);
//	        System.out.println("写入完成！");
//
//	    }

	    //使用字节流进行文件复制(字节缓冲流可以不使用，使用其目的主要是为了提高性能)
	    private static void copyByte(File[] files,File objFile){

	        InputStream  inputStream = null;
	        OutputStream outputStream = null;
	        BufferedInputStream bufferedInputStream = null;
	        BufferedOutputStream bufferedOutputStream = null;

	        for(File f : files){

	            //替换文件后缀
	            String objFileName = f.getName().replaceAll("\\.ACC$", ".mp3");
	            try {

	                inputStream = new FileInputStream(f);
	                outputStream = new FileOutputStream(new File(objFile,objFileName));
	                bufferedInputStream = new BufferedInputStream(inputStream);
	                bufferedOutputStream = new BufferedOutputStream(outputStream);

	                int c = 0;
	                while((c = bufferedInputStream.read()) != -1){
	                    bufferedOutputStream.write(c);
	                }

	            } catch (Exception e) {
	                e.printStackTrace();
	            } finally {
	                try {
	                    bufferedOutputStream.close();
	                    bufferedInputStream.close();
	                    outputStream.close();
	                    inputStream.close();

	                } catch (IOException e) {
	                    e.printStackTrace();
	                }
	            }

	        }

	    }

	    //使用字符流进行文件复制(字符缓冲流可以不使用，使用其目的主要是为了提高性能)
	    public static void copyChar(File file,File objFile){

	        Reader reader = null;
	        Writer writer = null;
	        BufferedReader bufferedReader = null;
	        BufferedWriter bufferedWriter = null;

            //替换文件后缀
            String objFileName = file.getName().replaceAll("\\.AAC$", ".mp3");
            try {

                reader = new FileReader(file);
                writer = new FileWriter(new File(objFile,objFileName));
                bufferedReader = new BufferedReader(reader);
                bufferedWriter = new BufferedWriter(writer);

                int c = 0;
                while ((c=bufferedReader.read()) != -1) {
                    bufferedWriter.write(c);
                }

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    bufferedWriter.close();
                    bufferedReader.close();
                    writer.close();
                    reader.close();

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


}
