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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? filesystem.java

?? java結(jié)合ajax編寫的簡易留言本
?? JAVA
字號:
package anni.tools;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * csv文件保存,讀取工具.
 * 每行用"\r\n"分隔
 * 每列用","分隔
 * 每列都是包含在兩個雙引號之間的字符串
 * 特殊字符使用轉(zhuǎn)義字符表示"\\","\r","\n,"\"","\'","\t"
 *
 * @since 2006-01-12 00:45
 * @author Lingo
 * @version 1.0
 */
public class FileSystem {
    /**
     * 記錄的行數(shù).
     */
    private int count;

    /**
     * 序列號.
     */
    private int sequence;

    /**
     * 保存所有記錄的列表.
     */
    private List all = null;

    /**
     * 保存數(shù)據(jù)的文件.
     */
    private File file;

    /**
     * 文件最后修改時間.
     */
    private long lastModifiedTime;

    /**
     * 構(gòu)造方法,根據(jù)指定的文件名,確定保存數(shù)據(jù)的文件的位置.
     * @since 2006-01-01 18:16
     * @author Lingo
     * @param fileName 操作的文件名
     */
    public FileSystem(final String fileName) {
        file = new File(fileName);

        if (!file.exists()) {
            System.out.println("文件不存在,自動創(chuàng)建一個新文件");

            try {
                file.createNewFile();
            } catch (IOException ex) {
                //拋出一個狀態(tài)錯誤的unchecked exception
                //請注意,這個異常不是必須使用try捕獲的
                throw new IllegalStateException("無法創(chuàng)建新文件 : "
                    + file.getAbsolutePath());
            }
        }

        if (file.exists() && file.isDirectory()) {
            System.out.println("輸入的是一個目錄,請指定一個文件");

            //拋出一個狀態(tài)錯誤的unchecked exception
            //請注意,這個異常不是必須使用try捕獲的
            throw new IllegalArgumentException(file.getAbsolutePath());
        }

        lastModifiedTime = file.lastModified();
    }

    /**
     * 聽從朱冰老大的話,在操作文件之前首先對文件的權(quán)限進(jìn)行檢測.
     *
     * @since 2006-02-12 00:34
     * @author Lingo
     * @throws Exception 可能拋出任何異常,沒好好想
     */
    private void checkValid() throws Exception {
        if (file.exists()) {
            //如果用戶對文件沒有讀或?qū)懙臋?quán)限,就報錯
            if (!file.canRead()) {
                throw new RuntimeException("權(quán)限不足,無法讀取文件。");
            }

            if (!file.canWrite()) {
                throw new RuntimeException("權(quán)限不足,無法寫入文件。");
            }

            if (file.isDirectory()) {
                throw new RuntimeException("需要指定一個文件,而不是目錄。");
            }
        } else {
            boolean result = file.createNewFile();

            if (!result) {
                System.out.println("新建文件發(fā)生錯誤。");
            }
        }
    }

    /**
     * 從文件中讀取所有的數(shù)據(jù).
     *
     * @since 2006-01-12 00:43
     * @author Lingo
     * @return List 記錄的列表
     * @throws Exception 可能拋出任何異常
     */
    public final List findAll() throws Exception {
        //檢測文件操作權(quán)限
        //因為每個方法都要調(diào)用這個方法,所以先只在這里加入這個判斷
        checkValid();

        //如果數(shù)據(jù)還沒有讀取到內(nèi)存,就讀取一遍
        if (all != null) {
            //如果文件已經(jīng)修改,就重新讀取
            if (lastModifiedTime == file.lastModified()) {
                return all;
            } else {
                lastModifiedTime = file.lastModified();
            }
        }

        all = new ArrayList();

        String[] tmp = null;
        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader(file));

            String line;
            List row;

            while ((line = reader.readLine()) != null) {
                if (line.equals("")) {
                    continue;
                }

                //按"\",\""分隔每一行
                tmp = line.split("\",\"");
                tmp[0] = tmp[0].substring(1);

                String end = tmp[tmp.length - 1];
                tmp[tmp.length - 1] = end.substring(0, end.length() - 1);

                for (int i = 0; i < tmp.length; i++) {
                    tmp[i] = getStringFromFile(tmp[i]);
                }

                row = new ArrayList(Arrays.asList(tmp));
                all.add(row);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (reader != null) {
                reader.close();
                reader = null;
            }
        }

        count = all.size();
        sequence = Integer.parseInt(tmp[0]);

        return all;
    }

    /**
     * 根據(jù)id查找一行數(shù)據(jù).
     * 如果找不到,就返回null
     * @since 2006-01-02 22:02
     * @author Lingo
     * @param id id
     * @return List id對應(yīng)的數(shù)據(jù)
     * @throws Exception 任何異常
     */
    public final List findById(final int id) throws Exception {
        //首先保證內(nèi)存的數(shù)據(jù)是最新的
        //如果文件已經(jīng)修改過,就先重新讀取一遍
        findAll();

        List row;

        for (int i = 0; i < count; i++) {
            row = (List) all.get(i);

            if (id == Integer.parseInt((String) row.get(0))) {
                return row;
            }
        }

        return null;
    }

    /**
     * 添加一行數(shù)據(jù).
     * 添加synchronized修飾,只知道應(yīng)該同步處理,不知道粒度是否正確
     *
     * @since 2006-01-12 22:14
     * @author Lingo
     * @param info 插入的數(shù)據(jù)
     * @throws Exception 任何異常
     */
    public final synchronized void insert(final List info)
        throws Exception {
        //首先保證內(nèi)存的數(shù)據(jù)是最新的
        //如果文件已經(jīng)修改過,就先重新讀取一遍
        findAll();

        sequence++;

        String line;

        StringBuffer buff = new StringBuffer();
        buff.append('\"').append(sequence);

        for (int i = 0; i < info.size(); i++) {
            buff.append("\",\"");

            line = (String) info.get(i);
            line = getStringFromInput(line);

            buff.append(line);
        }

        buff.append('\"');

        PrintWriter writer = new PrintWriter(new FileWriter(file, true));
        writer.println(buff.toString());
        writer.flush();
        writer.close();
    }

    /**
     * 修改一行數(shù)據(jù).
     * 添加synchronized修飾,只知道應(yīng)該同步處理,不知道粒度是否正確
     *
     * @since 2006-01-14 22:15
     * @author Lingo
     * @param info 需要修改的數(shù)據(jù)
         * @throws Exception 任何異常
     */
    public final synchronized void update(final List info)
        throws Exception {
        //首先保證內(nèi)存的數(shù)據(jù)是最新的
        //如果文件已經(jīng)修改過,就先重新讀取一遍
        findAll();

        int id = Integer.parseInt((String) info.get(0));

        List row;

        PrintWriter writer = null;

        try {
            writer = new PrintWriter(new FileWriter(file));

            for (int i = 0; i < count; i++) {
                row = (List) all.get(i);

                //替代id相同的那一行
                if (id == Integer.parseInt(row.get(0).toString())) {
                    row = info;
                }

                writeFile(row, writer);

                //System.out.println(result);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (writer != null) {
                writer.flush();
                writer.close();
                writer = null;
            }
        }
    }

    /**
     * 刪除一列數(shù)據(jù).
     * 添加synchronized修飾,只知道應(yīng)該同步處理,不知道粒度是否正確
     *
     * @since 2006-01-12 22:15
     * @author Lingo
     * @param id id
     * @throws Exception 任何異常
     */
    public final synchronized void delete(final int id)
        throws Exception {
        //首先保證內(nèi)存的數(shù)據(jù)是最新的
        //如果文件已經(jīng)修改過,就先重新讀取一遍
        findAll();

        List row;

        PrintWriter writer = null;

        try {
            writer = new PrintWriter(new FileWriter(file));

            for (int i = 0; i < count; i++) {
                row = (List) all.get(i);

                //System.out.println("index : "+i);
                //System.out.println(row);
                if (id == Integer.parseInt(row.get(0).toString())) {
                    continue;
                }

                writeFile(row, writer);

                //System.out.println(result);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (writer != null) {
                writer.flush();
                writer.close();
                writer = null;
            }
        }
    }

    /**
     * 向文件寫一行數(shù)據(jù).
     * @param row 保存一行數(shù)據(jù)的列表
     * @param writer 輸出流
         * @throws IOException 寫入數(shù)據(jù)的時候可能拋出異常
     */
    private void writeFile(final List row, final PrintWriter writer)
        throws IOException {
        StringBuffer buff = new StringBuffer();
        buff.append('\"');

        String line;

        for (int j = 0; j < row.size(); j++) {
            line = (String) row.get(j);
            //System.out.println(line);
            line = getStringFromInput(line);

            buff.append(line);
            buff.append("\",\"");
        }

        String result = buff.substring(0, buff.length() - 2);
        writer.println(result);
    }

    /**
     * 把輸入的字符串格式化成可以保存進(jìn)文件的格式.
     * 比如:程序中的換行符號'\n',要轉(zhuǎn)化成"\\n"
     * 這樣在文件中看到的就是"\n"了,而不是產(chǎn)生換行的效果
     *
     * @since 2006-01-01 17:44
     * @author Lingo
     * @param source 需要處理的字符
     * @return String 處理結(jié)果
     */
    private String getStringFromInput(final String source) {
        StringBuffer buff = new StringBuffer();
        char ch;

        int len = source.length();

        for (int i = 0; i < len; i++) {
            ch = source.charAt(i);

            if (ch == '\\') {
                buff.append("\\\\");
            } else if (ch == '\n') {
                buff.append("\\n");
            } else if (ch == '\r') {
                buff.append("\\r");
            } else if (ch == '\t') {
                buff.append("\\t");
            } else if (ch == '\'') {
                buff.append("\\\'");
            } else if (ch == '\"') {
                buff.append("\\\"");
            } else {
                buff.append(ch);
            }
        }

        return buff.toString();
    }

    /**
     * 把從文件中讀入的字符串格式化成正常的字符形式.
     * 比如:文件中保存的是:"\n",其實內(nèi)存中是兩個字符'\\'和'n'
     * 這里就要把它合成一個字符'\n'
     *
     * @since 2006-01-01 17:52
     * @author Lingo
     * @param source 需要處理的字符串
     * @return String 結(jié)果
     */
    private String getStringFromFile(final String source) {
        StringBuffer buff = new StringBuffer();
        char ch;

        int len = source.length();
        int index = 0;

        while (index < len) {
            ch = source.charAt(index);

            if (ch == '\\') {
                index++;
                ch = source.charAt(index);

                if (ch == '\\') {
                    buff.append("\\");
                } else if (ch == 'n') {
                    buff.append('\n');
                } else if (ch == 'r') {
                    buff.append('\r');
                } else if (ch == 't') {
                    buff.append('\t');
                } else if (ch == '\'') {
                    buff.append('\'');
                } else if (ch == '\"') {
                    buff.append('\"');
                } else {
                    throw new IllegalArgumentException("source:" + source
                        + "|index:" + index);
                }
            } else {
                buff.append(ch);
            }

            index++;
        }

        return buff.toString();
    }

    /**
     * 測試用的main方法.
     * @since 2006-01-01 14:52
     * @author Lingo
         * @param args 參數(shù)列表
         * @throws Exception 任何異常
     */
    public static final void main(final String[] args)
        throws Exception {
        FileSystem system = new FileSystem("res/input.txt");

        System.out.println(system.findAll() + ", count : " + system.count
            + ", sequence : " + system.sequence);

        List list = new ArrayList();
        list.add("\\");
        list.add("\"");
        list.add("\r");
        list.add("\n");
        list.add("\t");
        list.add("\'");
        system.insert(list);

        System.out.println(system.findAll() + ", count : " + system.count
            + ", sequence : " + system.sequence);
        system.delete(4);
        System.out.println(system.findAll() + ", count : " + system.count
            + ", sequence : " + system.sequence);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人一区二区| 日韩情涩欧美日韩视频| 日韩电影一二三区| 欧美国产一区视频在线观看| 在线免费观看日韩欧美| 国内欧美视频一区二区| 一区二区在线观看不卡| 26uuuu精品一区二区| 欧美日韩一区久久| 成熟亚洲日本毛茸茸凸凹| 亚洲国产精品人人做人人爽| 久久精品水蜜桃av综合天堂| 欧美日韩国产区一| 97久久超碰精品国产| 国产一区 二区| 日本视频在线一区| 亚洲精品免费电影| 国产精品三级电影| 精品国产乱码久久| 欧美电影一区二区| 欧美性大战久久久久久久蜜臀| 国内精品久久久久影院色| 五月综合激情网| 亚洲制服丝袜av| 国产精品的网站| 国产亚洲女人久久久久毛片| 日韩一区二区电影在线| 欧美久久一二区| 欧美午夜片在线观看| 91啪在线观看| 99精品偷自拍| 不卡一区中文字幕| 成人午夜精品在线| 国产精品影视网| 韩国女主播成人在线| 狠狠久久亚洲欧美| 老汉av免费一区二区三区| 午夜在线成人av| 亚洲国产欧美在线| 亚洲高清免费在线| 性久久久久久久| 亚洲成av人**亚洲成av**| 一区二区视频免费在线观看| 自拍偷拍国产精品| 亚洲欧美一区二区三区孕妇| 中文字幕欧美一| 亚洲色图20p| 亚洲国产一二三| 日韩和欧美一区二区三区| 视频一区二区中文字幕| 日韩精彩视频在线观看| 免费在线观看成人| 国内精品嫩模私拍在线| 国产成人亚洲综合a∨婷婷| 国产精品综合久久| 国产精品 欧美精品| voyeur盗摄精品| 色婷婷亚洲综合| 欧美精品视频www在线观看 | 国产精品18久久久久久久久久久久| 毛片一区二区三区| 国产乱码精品1区2区3区| 国产成人精品免费视频网站| 成人一级片在线观看| 一本久久精品一区二区| 欧美午夜精品一区二区三区| 欧美一区二区三区视频免费| 欧美成人精品福利| 国产精品三级av| 亚洲国产成人va在线观看天堂| 日本一不卡视频| 国产精品1区二区.| 一本大道久久精品懂色aⅴ| 欧美男人的天堂一二区| 精品久久一区二区三区| 亚洲欧美日韩一区二区| 亚洲成人av资源| 狠狠色综合日日| aaa国产一区| 91精品国产色综合久久久蜜香臀| 久久蜜桃一区二区| 亚洲激情五月婷婷| 久久er99精品| 91免费国产视频网站| 日韩视频一区二区| 亚洲视频1区2区| 美女国产一区二区三区| 成人免费视频网站在线观看| 欧美特级限制片免费在线观看| 精品福利在线导航| 亚洲影院理伦片| 国产老妇另类xxxxx| 在线观看欧美精品| 国产免费成人在线视频| 视频在线观看国产精品| 丁香婷婷综合网| 8x福利精品第一导航| 国产精品久久久久7777按摩| 人人精品人人爱| 91国偷自产一区二区开放时间| 精品日本一线二线三线不卡| 亚洲国产精品久久久久婷婷884| 国产一本一道久久香蕉| 在线不卡中文字幕播放| 亚洲视频在线一区| 国产乱码一区二区三区| 777欧美精品| 一区二区三区成人在线视频| 国产精品99久久久久| 制服.丝袜.亚洲.另类.中文| 亚洲图片欧美激情| 国产精品一区二区三区四区| 欧美裸体一区二区三区| 亚洲影视资源网| 99国产欧美另类久久久精品| 久久蜜臀精品av| 国产一区二区调教| 91精品国产综合久久婷婷香蕉| 亚洲人快播电影网| 成人国产电影网| 久久精品男人的天堂| 蜜桃av一区二区| 欧美老年两性高潮| 天天综合网 天天综合色| 91极品美女在线| 亚洲视频免费观看| 97se亚洲国产综合自在线观| 国产精品青草综合久久久久99| 国产一区不卡在线| 久久久噜噜噜久久中文字幕色伊伊| 日本欧美一区二区三区乱码| 欧美精品久久99久久在免费线 | 亚洲精品中文字幕乱码三区| 成人免费毛片片v| 欧美国产激情一区二区三区蜜月| 激情图片小说一区| 欧美mv和日韩mv的网站| 精品在线免费观看| 久久网站最新地址| 国产精品一区二区三区四区| 国产日本一区二区| 国产xxx精品视频大全| 国产亚洲婷婷免费| 国产69精品一区二区亚洲孕妇| 国产色综合久久| 国产91丝袜在线18| 国产精品―色哟哟| 色哟哟日韩精品| 亚洲va欧美va人人爽| 欧美日韩另类一区| 日韩vs国产vs欧美| 久久综合九色综合欧美就去吻| 国产一区三区三区| 中文字幕不卡一区| 色偷偷久久一区二区三区| 亚洲一级在线观看| 欧美一区二区人人喊爽| 精品一区二区三区av| 久久久亚洲午夜电影| 成人开心网精品视频| 亚洲精品一二三| 69p69国产精品| 国产综合成人久久大片91| 国产亚洲欧美一区在线观看| 99久久精品一区| 亚洲国产精品自拍| 精品欧美乱码久久久久久1区2区| 国产成人8x视频一区二区| 亚洲素人一区二区| 欧美一级免费大片| 国产91丝袜在线播放| 亚洲成人一二三| 久久综合精品国产一区二区三区| 成人高清视频在线观看| 午夜精品久久久久影视| www国产亚洲精品久久麻豆| 91免费观看国产| 奇米一区二区三区| 国产精品视频一二| 在线成人免费观看| 粉嫩欧美一区二区三区高清影视| 亚洲激情综合网| 精品国产一二三区| 日本久久精品电影| 激情另类小说区图片区视频区| 国产精品护士白丝一区av| 欧美精选一区二区| 国产成人av电影在线播放| 日韩制服丝袜av| 中文字幕一区在线观看| 欧美一区二区播放| 91免费国产在线| 国产一区二区剧情av在线| 亚洲大片精品永久免费| 中文字幕不卡在线| 欧美成人猛片aaaaaaa| 欧美性感一区二区三区| 成人激情免费网站| 国产一区二区视频在线播放| 图片区小说区国产精品视频 |