A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

大家好:
这是我写的一段代码 请大家看看有没有要改进或者不对的地方 谢谢!
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);
        }
}

点评

我看过了,感觉很老手的样子,代码简单精辟!完全没有发现问题!  发表于 2012-4-16 07:07

评分

参与人数 2技术分 +12 收起 理由
戴振良 + 10 很给力!
贠(yun)靖 + 2 很积极,也爱钻研,像你学习~~~!.

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马