亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? maintest.java

?? Disk simulation program. Simulates file-system with direct access.
?? JAVA
字號:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class MainTest
{
    public static Disk disk;
    public static IndexedFile idxFile;

    /**
     * Parses data from file into list of Records
     *
     * @return list of Records
     */
    public static List<Record> parseDataFromFile()
    {
        List<Record> records = new ArrayList<Record>();
        try
        {
            File f = new File("Mountains.txt");
            BufferedReader br = new BufferedReader(new FileReader(f));
            String data = null;
            do
            {
                data = br.readLine();
                if (data != null)
                {
                    Record r = new Record();
                    r.parseFromFile(data);
                    records.add(r);
                }
            }
            while (data != null);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.exit(-1);
        }
        //Sort list of records by name field
        Collections.sort(records);
        System.out.println("Loaded " + records.size() + " records from file");
        return records;
    }

    /**
     * Fills disk with data
     *
     * @param records - data
     * @return first index sector
     */
    public static int fillDiskWithData(List<Record> records)
    {
        int recordsPerSector = disk.getSectorSize() / Record.RECORD_SIZE;
        int currSector = 0;
        int currOffset = 0;
        int currRecord = 0;
        boolean endOfRecords = false;
        while (!endOfRecords)
        {
            char[] buffer = new char[disk.getSectorSize()];
            for (int i = 0; i < (recordsPerSector - 3); i++)
            {
                currOffset = i * Record.RECORD_SIZE;
                Record r = records.get(currRecord);
                char[] data = r.convertToData();
                System.arraycopy(data, 0, buffer, currOffset, data.length);
                currRecord++;
                if (currRecord >= records.size())
                {
                    endOfRecords = true;
                    break;
                }
            }
            disk.writeSector(currSector, buffer);
            currSector++;
        }
        System.out.println("Written " + (currSector - 1) + " data sectors to disk");
        return currSector;
    }

    /**
     * Building index
     *
     * @param indexStartSector - first index sector
     * @return IndexedFile
     */
    public static IndexedFile buildIndex(int indexStartSector)
    {
        System.out.println("Starting building index...");
        int idxLevels = 0;
        int currIdxLevelStartSector = indexStartSector;
        int idxSectors = 0;
        int idxRootSector = 0;
        int idxRecords = 0;
        int currDataSector = 0;
        int currIdxSector = indexStartSector;
        int currIdxOffset = 0;

        IndexedFile iFile = null;
        char[] readBuffer = new char[disk.getSectorSize()];
        char[] writeBuffer = new char[disk.getSectorSize()];
        char[] recordBuffer = new char[Record.RECORD_SIZE];
        boolean wasWritten = false;

        while ((currIdxSector - currDataSector) > 1)
        {
            System.out.println("Started new index level " + idxLevels + " at sector " + currIdxLevelStartSector);
            while (currDataSector < currIdxLevelStartSector)
            {
                wasWritten = false;
                //Read current data sector to readBuffer
                disk.readSector(currDataSector, readBuffer);
                System.arraycopy(readBuffer, 0, recordBuffer, 0, recordBuffer.length);
                System.out.println("Read data sector " + currDataSector);
                //Parse data record
                Record r = new Record();
                r.parseFromData(recordBuffer);

                //Create index record and its char[] representation
                IndexRecord ir = new IndexRecord(Record.NAME_LENGTH, r.getName(), String.valueOf(currDataSector).toCharArray());
                char[] irData = ir.getData();

                //Write index record to writeBuffer
                System.arraycopy(irData, 0, writeBuffer, currIdxOffset, irData.length);
                System.out.println("Written index record to sector " + currIdxSector + ", offset " + currIdxOffset);
                currDataSector++;
                currIdxOffset += irData.length;
                idxRecords++;

                //Check if write buffer full
                if ((currIdxOffset + irData.length) >= writeBuffer.length)
                {
                    //Write buffer to disk
                    disk.writeSector(currIdxSector, writeBuffer);
                    wasWritten = true;
                    System.out.println("Index sector " + currIdxSector + " was written to disk");
                    //Clear buffer
                    Arrays.fill(writeBuffer, '\0');

                    //Seek to new idx sector
                    currIdxOffset = 0;
                    currIdxSector++;
                    idxSectors++;
                    continue;
                }
            }
            //Increase idx levels number
            idxLevels++;
            currIdxLevelStartSector = currIdxSector;
        }
        if (!wasWritten)
        {
            disk.writeSector(currIdxSector, writeBuffer);
            idxSectors++;
            idxRootSector = currIdxSector;
            System.out.println("Last index sector " + currIdxSector + " was written to disk");
            System.out.println(idxRecords + " index records was created");
        }
        iFile = new IndexedFile(disk, Record.RECORD_SIZE, Record.NAME_LENGTH, 0, indexStartSector, idxSectors, idxRootSector, idxLevels);
        System.out.println("\nCreated " + iFile.toString());
        return iFile;
    }


    public static String getInfoFromUser(String text) throws Exception
    {
        System.out.print(text);
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bis = new BufferedReader(isr);
        return bis.readLine();
    }

    public static void startMenu() throws Exception
    {
        StringBuilder sb = new StringBuilder();
        sb.append("\n1 - Insert new record\n");
        sb.append("2 - Find record\n");
        sb.append("3 - Quit\n");

        int i = 0;

        while (i != 3)
        {
            System.out.println(sb.toString());
            String choice = getInfoFromUser("Enter your choice: ");
            try
            {
                i = Integer.parseInt(choice);
            }
            catch (NumberFormatException e)
            {
                continue;
            }

            String name = "";
            Record r = null;
            boolean isOk = false;

            switch (i)
            {
                case 1:
                    name = getInfoFromUser("Enter mountain name: ");
                    String country = getInfoFromUser("Enter country: ");
                    String alt = getInfoFromUser("Enter altitude: ");

                    r = new Record(name.toCharArray(), country.toCharArray(), alt.toCharArray());
                    isOk = idxFile.insertRecord(r.convertToData());

                    if (isOk)
                        System.out.println("Insertion was successful");
                    else
                        System.out.println("Insertion failed - record already exists");

                    break;

                case 2:
                    name = getInfoFromUser("Enter mountain name: ");

                    r = new Record(name.toCharArray(), new char[]{'\0'}, new char[]{'\0'});
                    char[] rec = r.convertToData();
                    isOk = idxFile.findRecord(rec);

                    if (isOk)
                    {
                        System.out.println("\nRecord found:");
                        r = new Record();
                        r.parseFromData(rec);
                        System.out.println(String.valueOf(r.getName()).trim() + ", country: " + String.valueOf(r.getCountry()).trim() + ", altitude: " + String.valueOf(r.getAltitude()).trim() + " ft.");
                    }
                    else
                        System.out.println("Record not found:");

                    break;

                case 3:
                    System.exit(0);
                    
                default:
            }
        }
    }

    /**
     * Main method
     *
     * @param args - not used
     */
    public static void main(String[] args)
    {
        disk = new Disk();
        List<Record> records = parseDataFromFile();
        int idxStart = fillDiskWithData(records);
        idxFile = buildIndex(idxStart);

        try
        {
            startMenu();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合亚洲图片综合区| 亚洲线精品一区二区三区八戒| 国产精品国产馆在线真实露脸| 亚洲乱码国产乱码精品精小说| 日韩综合小视频| 韩国精品一区二区| 色素色在线综合| 日韩一级片网站| 中文在线一区二区| 亚洲大型综合色站| 国产在线视频一区二区| 成人黄色片在线观看| 欧美性大战久久| 亚洲精品在线免费播放| 亚洲免费在线播放| 久久99国产精品免费网站| 99精品视频在线观看| 欧美精品免费视频| 国产精品国产三级国产普通话蜜臀 | 3d动漫精品啪啪1区2区免费| 久久婷婷色综合| 亚洲一级二级三级| 国产风韵犹存在线视精品| 欧美午夜一区二区三区免费大片| 久久久不卡影院| 午夜欧美电影在线观看| 成人av片在线观看| 欧美成人一级视频| 一区av在线播放| 国产精品99久久久久久久vr| 欧美视频在线不卡| 国产欧美一区二区在线| 日韩国产欧美在线视频| 一本到不卡精品视频在线观看| 欧美电影免费观看高清完整版在线| 国产精品女上位| 久久99精品国产.久久久久久| 欧美三级三级三级爽爽爽| 欧美激情一区二区三区在线| 人人超碰91尤物精品国产| 在线影视一区二区三区| 欧美国产日韩一二三区| 精品在线免费观看| 91精品久久久久久蜜臀| 一区二区三区毛片| av中文字幕在线不卡| 久久久不卡影院| 久久国产视频网| 337p亚洲精品色噜噜噜| 亚洲亚洲精品在线观看| av亚洲精华国产精华精华| 精品国产自在久精品国产| 日韩激情av在线| 欧美日韩国产综合一区二区三区| 亚洲欧美日韩成人高清在线一区| 成人中文字幕合集| 国产亚洲综合在线| 精品影视av免费| 日韩欧美的一区| 美女视频一区在线观看| 91麻豆精品国产| 日韩av一区二区在线影视| 欧美日韩国产乱码电影| 亚洲综合视频在线| 在线观看视频欧美| 一区二区视频在线看| 94-欧美-setu| 亚洲图片欧美激情| 99久久精品一区二区| 亚洲国产精品av| 波多野结衣一区二区三区| 欧美国产禁国产网站cc| 成人精品亚洲人成在线| 国产精品天美传媒| av在线这里只有精品| 成人欧美一区二区三区小说| 99免费精品视频| 亚洲欧洲日韩综合一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲国产成人私人影院tom | 成人免费视频在线观看| 91在线观看免费视频| 中文字幕一区二区不卡| 色素色在线综合| 亚洲成人动漫av| 日韩视频免费观看高清完整版在线观看 | 亚洲一区二区三区四区中文字幕 | 午夜私人影院久久久久| 欧美精品乱人伦久久久久久| 青青国产91久久久久久| 日韩欧美国产系列| 国产在线视频精品一区| 欧美国产1区2区| 色哟哟亚洲精品| 爽好多水快深点欧美视频| 欧美一区二区三区婷婷月色| 国产一区二区三区香蕉| 国产精品网站一区| 91官网在线免费观看| 舔着乳尖日韩一区| 久久久一区二区三区捆绑**| 成人网在线免费视频| 一区二区久久久| 欧美一区在线视频| 国产麻豆日韩欧美久久| 亚洲丝袜另类动漫二区| 欧美日韩一区视频| 狠狠色丁香九九婷婷综合五月| 国产精品久久久久四虎| 欧美日韩一区 二区 三区 久久精品 | 色天使色偷偷av一区二区| 日日夜夜精品视频免费| 国产亚洲一区二区在线观看| 91免费国产视频网站| 日韩精品每日更新| 欧美激情一区三区| 精品久久五月天| 91精品国产综合久久精品性色 | 99re这里只有精品首页| 精品国产乱码久久久久久影片| 国产精品白丝av| 亚洲精品国产一区二区精华液 | 亚洲欧美日韩国产综合| 91精品国产手机| 成人国产精品视频| 视频在线观看国产精品| 国产欧美一区二区精品秋霞影院| 欧美亚洲一区二区三区四区| 国产伦精品一区二区三区视频青涩 | 亚洲天天做日日做天天谢日日欢| 欧美一区二区网站| 99re6这里只有精品视频在线观看| 午夜精品久久久久久久99水蜜桃| 国产亲近乱来精品视频| 欧美精品国产精品| 99久久婷婷国产| 精品在线播放午夜| 亚洲最新视频在线播放| 99re在线精品| 国产精品乱码一区二区三区软件| 91精品久久久久久久久99蜜臂| 国产成人在线免费| 日韩综合小视频| 亚洲男人天堂av网| 国产日韩精品一区二区浪潮av| 欧美欧美午夜aⅴ在线观看| 成人高清av在线| 极品美女销魂一区二区三区免费 | 日本国产一区二区| 国产激情一区二区三区桃花岛亚洲| 亚洲444eee在线观看| 亚洲日本电影在线| 国产欧美精品一区二区色综合朱莉 | 日本一区二区三区久久久久久久久不 | 亚洲欧美综合在线精品| 久久久久久久精| 欧美一区二区三区免费| 欧美三级三级三级爽爽爽| 波多野结衣中文字幕一区二区三区 | 在线亚洲精品福利网址导航| 高清日韩电视剧大全免费| 久久超碰97人人做人人爱| 天天射综合影视| 夜色激情一区二区| 亚洲美女屁股眼交| 国产精品久久久久aaaa| 国产亚洲欧美一级| 久久综合久久综合九色| 日韩一区二区免费在线观看| 欧美高清hd18日本| 欧美亚洲尤物久久| 欧美亚州韩日在线看免费版国语版| www.欧美日韩| 成人h版在线观看| 高清成人在线观看| 成人午夜视频在线观看| 国产成人免费xxxxxxxx| 国产激情一区二区三区四区| 国产美女久久久久| 国产伦理精品不卡| 国产成人日日夜夜| 国产91丝袜在线播放九色| 国产99久久久精品| 国产在线国偷精品产拍免费yy| 狠狠色综合色综合网络| 狠狠色2019综合网| 国产福利91精品| 成人福利视频网站| 99九九99九九九视频精品| 91一区二区在线| 一本到一区二区三区| 欧美性大战久久久久久久蜜臀| 欧美亚洲综合另类| 欧美精品黑人性xxxx| 日韩一区二区视频在线观看| 精品国产一区二区三区av性色| 欧美精品一区二区三区在线播放| 久久先锋影音av| 国产片一区二区| 最新欧美精品一区二区三区|