纯真IP数据库转txt

在将IP解析代码从本地迁移到集群时遇到问题,原本使用文件流无法读取HDFS上的数据库文件。解决方案是先将IP数据库进行解析,然后将结果导出到TXT文件。主要代码参考了网上博客并进行了调整。
摘要由CSDN通过智能技术生成

最近在解析ip数据库时,遇到一个问题。代码在本地可以运行,但是放在集群上时,却无法运行,问题可能出现在java 文件流无法加载hdfs 文件?之后转换下思路,试着先把ip解析出来。 主要代码来源于网上的一个博客,红色部分是本人修改部分

package ip;
import java.io.*;
import java.nio.ByteOrder;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ip.LogFactory;
import org.apache.log4j.Level;
/**
 * Created by XNLEJ on 2017/10/25 0025.
 */
public class IpSeeker {
    //����IP���ݿ���
    private String IP_FILE="QQWry.Dat";
    //������ļ���
    private String INSTALL_DIR="f:/qqwry";


    // һЩ�̶������������¼���ȵȵ�
    private static final int IP_RECORD_LENGTH = 7;
    private static final byte REDIRECT_MODE_1 = 0x01;
    private static final byte REDIRECT_MODE_2 = 0x02;

    // ������Ϊcache����ѯһ��ipʱ���Ȳcache���Լ��ٲ���Ҫ���ظ�����
    private Map<String, IPLocation> ipCache;
    // ����ļ�������
    private RandomAccessFile ipFile;
    // �ڴ�ӳ���ļ�
    private MappedByteBuffer mbb;
    // ��ʼ�����Ŀ�ʼ�ͽ����ľ���ƫ��
    private long ipBegin, ipEnd;
    // Ϊ���Ч�ʶ����õ���ʱ����
    private IPLocation loc;
    private byte[] buf;
    private byte[] b4;
    private byte[] b3;

    public IpSeeker(String fileName,String dir)  {
        this.INSTALL_DIR=dir;
        this.IP_FILE=fileName;
        ipCache = new HashMap<String, IPLocation>();
        loc = new IPLocation();
        buf = new byte[1024];
        b4 = new byte[4];
        b3 = new byte[3];
        try {
            ipFile = new RandomAccessFile(IP_FILE, "r");
        } catch (FileNotFoundException e) {
            // ����Ҳ�������ļ����ٳ����ٵ�ǰĿ¼�����������ȫ������Сд�ļ���
            //     ��Ϊ��Щϵͳ�������ִ�Сд�����Ҳ���ip��ַ��Ϣ�ļ�
            String filename = new File(IP_FILE).getName().toLowerCase();
            File[] files = new File(INSTALL_DIR).listFiles();
            for(int i = 0; i < files.length; i++) {
                if(files[i].isFile()) {
                    if(files[i].getName().toLowerCase().equals(filename)) {
                        try {
                            ipFile = new RandomAccessFile(files[i], "r");
                        } catch (FileNotFoundException e1) {
                            LogFactory.log("IP��ַ��Ϣ�ļ�û���ҵ���IP��ʾ���ܽ��
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值