大数据Java基础第十五天作业

第一题:实现文件拆分、合并。
import java.io.File;
import java.io.RandomAccessFile;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.util.List;
import java.util.ArrayList;

class RandomDome{
    public static void main(String[] args) throws Exception{
        randomSplit("e:/index.txt",3,5);
        List<String> inpath_list = new ArrayList<String>();
        inpath_list.add("e:/index0.txt");
        inpath_list.add("e:/index1.txt");
        inpath_list.add("e:/index2.txt");
        randomMerge("e:/index3.txt",inpath_list);
    }

    public static void randomSplit(String inpath,String outpath,int num,int buf_length) throws Exception{
        File file = new File(inpath);
        RandomAccessFile raf = new RandomAccessFile(file,"r");
        long file_length = file.length();
        int avg_length = (int)file_length / 3;
        for(int i=0;i<num;i++){
            int start_index = i * avg_length;
            int end_index = 0;
            if(i == (num - 1)){
                end_index = (int)file_length - 1;
            }else{
                end_index = (i + 1) * avg_length - 1;
            }
            raf.seek(start_index);
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outpath + i));
            byte[] buf = new byte[buf_length];
            System.out.println(start_index + "---" + end_index);
            while(true){
                int current_index = (int)raf.getFilePointer();
                int remain = end_index - current_index + 1;
                System.out.println(current_index + "---" + remain);
                if(remain >= buf.length){
                    raf.read(buf);
                    out.write(buf);
                }else{
                    raf.read(buf,0,remain);
                    out.write(buf,0,remain);
                }
                if(raf.getFilePointer() > end_index){
                    break;
                }    
            }
            out.close();
        }
        raf.close();
    }
    public static void randomMerge(String outpath,List<String> inpath_list) throws Exception{
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outpath));
        for(String inpath : inpath_list){
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(inpath));
            byte[] buf = new byte[1024];
            int len;
            while((len = in.read(buf)) != -1){
                out.write(buf,0,len);
            }
            in.close();
        }
        out.close();
    }
}
时间: 2024-08-09 05:18:20

大数据Java基础第十五天作业的相关文章

大数据Java基础第十五天、第十六天作业

使用Socket编写类似QQ通讯工具,显示屏幕的历史聊天记录待优化. import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import java.awt.event

大数据JAVA基础第十天

1.继承extends(也叫扩展) 引入 首先写两个类: //定义学生类 class Student { //成员变量 private String name; private int age; //空构造 public Student(){} //getXxx()/setXxx() public void eat() { System.out.println("吃饭"); } } //定义教师类 class Teacher { //成员变量 private String name;

大数据JAVA基础第十四天

1.Java异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,输入值的范围,读取文件是否存在,网络是否始终保持通畅等等. 对于程序设计人员需要尽可能的预知所有可能发生的情况,尽可能的保证程序能在所有最糟糕的情况下都能运行. 但实际上,意外情况是不胜枚举的,程序可能发生的异常情况远远多于程序员所能考虑到的意外情况. Java的异常处理机制可以让程序具有良好的容错性,让程序更加健

大数据Java基础第十天作业

import java.util.List; import java.util.ArrayList; class ListDemo{          @SuppressWarnings(value="unchecked")     public static void main(String[] args){         List list = new ArrayList();         list.add(100);         list.add(new Integer

大数据Java基础第十六天、第十七天作业

使用Socket编写类似QQ通讯工具,显示屏幕的历史聊天记录待优化. import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import java.awt.event

大数据Java基础第十九天作业

第一题:简单的URL获取资源下载 import java.net.URL; import java.net.URLConnection; import java.io.InputStream; import java.io.FileOutputStream; class DownloadDemo{     public static void main(String[] args){         String src_url = "http://one.jiangmin.com/jiangm

从0开始学大数据-Java基础-三元运算符/键盘录入(4)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop.Spark.Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习. 上一节了解Java运算符,其中三元运算符没有做讲解,本节我们开始学习Java基础-三元运算符/键盘录入,将会围绕以下几个知识点进行展开学习: 三元运算符 键盘录入数据 一.运算符 1.三元运算符 接着上一节的话题运算符,本节讲三元运算符,在讲三元运算符之前,可能会有很多朋友会问,是不是有一元运

从零开始学大数据-Java基础-switch语句(6)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop.Spark.Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习. 上一节学习了流程控制语句,本节学习switch语句. 开始之前,我们先看一下上节的练习题. 一.练习题 if语句格式的练习: 1.获取两个数据中较大的值 2.判断一个数据是奇数还是偶数,并输出 程序执行结果如下: 二.switch语句 流程控制语句的选择结构 1 选择结构(也被称为分支结构)

【全集】大数据Java基础

课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语言Java,为后续大数据课程的学习奠定了坚实的语言基础. 适用人群 1.想学大数据没有语言基础的学员 2.想学大数据没有Java语言基础的学员 3.转行想学大数据的学员 4.了解Java,大数据Java知识体系不完整的学员 课程视频下载地址(视频完整,无加密) 链接:https://pan.baid