黑马程序员技术交流社区

标题: 文件切割 有点看不明白 求解 [打印本页]

作者: 宗士为    时间: 2012-5-15 09:10
标题: 文件切割 有点看不明白 求解
代码需求是:把一个文件A分成3个部分   分别存入新建的B文件夹中   并删掉A文件   将B文件改名和A的名字一样

以下是原代码   红色部分是for循环将文件分成3部分的主体   有点不明白是怎么实现的   中间每步都做了什么  一步一步 的怎么实现

请明白人说下   求解

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Exercise6 {

        public static void main(String[] args) throws IOException {
                System.out.println("请输入要分割的文件路径:");
                File file = Util.getFile();                //这个是自己编的工具类Util  可以对输入的路径进行判断是否正确  返回正确的路径名(就是前面的File)                                       
               
                File tempDir = new File(file.getParent(), ".temp");       
                tempDir.mkdir();
               
                long partLen = file.length() / 3 + 1;                               
                FileInputStream fis = new FileInputStream(file);       
                for (int i = 0; i < 3; i++) {                                               
                        FileOutputStream fos = new FileOutputStream(new File(tempDir, i + ""));               
                        byte[] buffer = new byte[(int) partLen];               
                        int len = fis.read(buffer);                                               
                        fos.write(buffer, 0, len);                                               
                        fos.close();                                                                       
                }
                fis.close();
               
                file.delete();                               
                tempDir.renameTo(file);               
}


红色部分是

作者: 宗士为    时间: 2012-5-15 09:50
这个是我自定义的Util工具

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class Util {
       
        public static File getDir() throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                        File file = new File(br.readLine());       
                        if (!file.exists())                                               
                                System.out.println("您输入的路径不存在, 请重新输入:");
                        else if (!file.isDirectory())                       
                                System.out.println("您输入的不是文件夹路径, 请重新输入:");
                        else
                                return file;                       
                }
        }
       
}

作者: 张文建    时间: 2012-5-15 09:55
for (int i = 0; i < 3; i++) {      //有循环,每循环一次都要创建一个FileOutputStream流,每创建一个流都会分割出一个文件                                          
                        FileOutputStream fos = new FileOutputStream(new File(tempDir, i + ""));               
                        byte[] buffer = new byte[(int) partLen];               
                        int len = fis.read(buffer);                                                
                        fos.write(buffer, 0, len);                                                
                        fos.close();                                                                        
                }
有循环,每循环一次都要创建一个FileOutputStream流,每创建一个流都会分割出一个文件




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