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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class Test3 {

        /**
         * 切割文件
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                File file = getFile();
                //请输入第二个要被拷入的文件路径
                File dir = new File("G:\\abcd");
                splitFile(file , dir);
        }
       
        /**
         * 切割文件
         * 返回值boolean,
         * 参数,一个切割文件,一个File的dir路径
         * 分析
         * 1.得到文件对象
         * 2.创建输入流
         * 3.创建输出流引用   因为要生成很多个文件.所以输出流对象在循环中
         * 4.创建一个小数组arr.用来定义缓冲区
         * 5.创建一个count  的int变量 用来区分切割后文件的名字
         * 6.创建一个name 来获取file对象的名字
         * 7.read这个流.创建输出流对象来输出这个流
         * 8.返回true
         * @throws IOException
         */
        private static void splitFile(File file , File dir) throws IOException {
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = null;
               
                byte[] arr = new byte[1024 * 1024 ];//得到的数据是M
               
                int count = 1;
                String name = file.getName();
               
                int len;
                while((len = fis.read(arr)) != -1) {
                        fos = new FileOutputStream(new File(dir , name + count++));
                        fos.write(arr, 0, len);
                        fos.close();//创建一个文件,关闭一个流
                }
        }

        /*
         * 定义一个方法获取键盘录入的文件路径,并封装成File对象返回
         * 1.返回类型File
         * 2.参数列表无
         */
        private static File getFile() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入文件路径:");
                while(true) {
                        String line = sc.nextLine();
                        File file = new File(line);//把文件名封装在File对象
                        if(!file.exists())
                                System.out.println("文件不存在,请重新输入:");
                        else if(file.isDirectory())
                                System.out.println("您输入的是一个文件夹,请重新输入:");
                        else
                                return file;//为什么没有跳出循环,因为ruturn是跳出方法.方法都终止了.还有什么循环
                }
        }
}

1 个回复

倒序浏览
不错,收了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马