黑马程序员技术交流社区

标题: 关于戴振良同学的'求解一道IO相关的实例 ' [打印本页]

作者: 袁计艳    时间: 2012-4-11 16:56
标题: 关于戴振良同学的'求解一道IO相关的实例 '
大家好:
这是我写的一段代码 请大家看看有没有要改进或者不对的地方 谢谢!
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class IoTest {

        public StringBuffer fileDoc(File path,StringBuffer sb){
                //目录列表数组
                File[] files = path.listFiles();
               
                //字节流读取
                FileInputStream fileInputStream = null;
               
                for(File file1 : files){
                        if(file1.isDirectory()){//如果是目录
                                //递归
                                fileDoc(file1,sb);
                        }else{
                                try {
                                        fileInputStream = new FileInputStream(file1);
                                        int size = fileInputStream.available();
                                        byte[] tempByte = new byte[size];
                                       
                                        if(fileInputStream.read(tempByte) != size){
                                                System.out.println("文件读取失败!!!");
                                        }else{
                                                //内容转换
                                                String change = new String(tempByte,"utf-8");
                                               
                                                sb.append(change);
                                        }
                                       
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                }
               
                return sb;
        }
       
        //保存数据
        public static void saveDataForTxt(StringBuffer sbStr){
                //总数据
                String allStr = sbStr.toString();
                byte[] bytes = allStr.getBytes();
               
                //将数据放到字节输入流中
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
               
                //1k的数据
                byte[] newbytes = new byte[1024];
               
                int len = 0;
                int i = 1;
               
                try {
                        while((len = bais.read(newbytes)) != -1){
                                File file = new File("d:\\java\\"+i+".txt");
                                new FileOutputStream(file).write(newbytes,0,len);
                                i++;
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
       
       
        public static void main(String[] args) {
                String path = "d:\\TDDownload\\Test1";
                File file = new File(path);
               
                //要得到的数据集合(初始)
                StringBuffer sbTemp = new StringBuffer();
               
                sbTemp = new IoTest().fileDoc(file,sbTemp);
               
                saveDataForTxt(sbTemp);
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2