java 代碼碎片

一爪喘、java 按行將一篇文本讀入到 List 中(保留換行)

public static List<String> splitTextToLineList(String text) {
    List<String> lines = new ArrayList<>();
    String[] splits = text.split("\n");
    for (int i = 0; i < splits.length; i++) {
        if (i != splits.length - 1) {
            lines.add(splits[i] + "\n");
        } else if (i == splits.length - 1) {
            if (text.endsWith("\n")) {
                lines.add(splits[i] + "\n");
            } else {
                lines.add(splits[i]);
            }
        }
    }
    return lines;
}

二颜曾、以追加的方式寫文件

public static void writeStrToFile(String fileName, String str) {
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter(fileName, true));
        out.write(str);
        out.close();
    } catch (IOException e) {
        System.out.println("exception occoured" + e);
    }
}

三、反射的用法

package com.bluesky.bubble.paragraph.util;

public class ParagraphSpliterUtil {
    private static boolean isFragmentaryOrdinalBlock(int begin, int end, String text) {
        // TODO
        return fragmentaryOrdinalBlock;
    }
}

// ================================
@Test
public void testIsFragmentaryOrdinalBlock() throws Exception {
    String text = "He is a good man, and he has a dog.";
    Class<?> clazz = Class.forName("com.bluesky.bubble.paragraph.util.ParagraphSpliterUtil");
    Constructor<ParagraphSpliterUtil> constructor = (Constructor<ParagraphSpliterUtil>) clazz.getConstructor();
    ParagraphSpliterUtil spliterUtil = constructor.newInstance();
    Method method = clazz.getDeclaredMethod("isFragmentaryOrdinalBlock", int.class, int.class, String.class);
    method.setAccessible(true);
    Boolean result = (Boolean) method.invoke(spliterUtil, 0, text.length(), text);
    assertTrue(result);
}

四秉剑、對(duì)象實(shí)現(xiàn) Comparable 接口

public class Span implements Comparable<Span>{

    private int begin;
    private int end;

    public Span(int begin, int end) {
        this.begin = begin;
        this.end = end;
    }

    public int getBegin() {
        return begin;
    }

    public void setBegin(int begin) {
        this.begin = begin;
    }

    public int getEnd() {
        return end;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    @Override
    public int compareTo(Span span) {
        if (this.begin == span.getBegin()) {
            return this.end - span.getEnd();
        }
        return this.begin - span.getBegin();
    }

}

五泛豪、獲取一個(gè)路徑下的所有文件

public static List<File> getDataDirs(File topDir) {
    List<File> annFiles = new ArrayList<>();
    getAnnFilesRec(topDir, annFiles);
    return annFiles;
}

private static void getAnnFilesRec(File topDir, List<File> annFiles) {
    for (File file : topDir.listFiles()) {
        if (file.isDirectory()) {
            getAnnFilesRec(file, annFiles);
        } else {
            annFiles.add(file);
        }
    }
}

六、java 對(duì)象序列化與反序列化

// 序列化(非基礎(chǔ)類型要實(shí)現(xiàn)Serializable接口,和序列號(hào))
public static void main(String[] args) throws FileNotFoundException, IOException {
    Map<String, Integer> map = new HashMap<>();
    map.put("hi", 1);
    map.put("good", 2);
    ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File("./data/serialize-test")));
    oo.writeObject(map);
    oo.close();
}

// 反序列化
@SuppressWarnings({ "rawtypes", "unchecked", "resource" })
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("E:/Person.txt")));
    Map<String, Integer> map = (Map) ois.readObject();
    System.out.println(map.get("hi"));
}

七诡曙、java 中 OptionParser 的使用

import joptsimple.OptionParser;
import joptsimple.OptionSet;

public static  void main(String[] args) {
    OptionSet options = parseArgs(args);
    String outputFile = (String) options.valueOf("output");
    System.out.println("output: " + outputFile);
}

private static OptionSet parseArgs(String[] args) {
    OptionParser parser = new OptionParser();
    parser.accepts(OUTPUT_FILE).withOptionalArg().ofType(String.class).defaultsTo("output")
                .describedAs("result output file");
    OptionSet options = parser.parse(args);
    return options;
}

八臀叙、base64對(duì)字符串進(jìn)行編碼和解碼

    // 編碼
    String asB64 = Base64.getEncoder().encodeToString("中華人民共和國".getBytes("utf-8"));
    System.out.println(asB64); // 輸出為: 5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9
    // 解碼
    byte[] asBytes = Base64.getDecoder().decode("5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9");
    System.out.println(new String(asBytes, "utf-8")); // 輸出為: 中華人民共和國

九、通過某個(gè)字符串將一個(gè)字符串 list 拼接起來

import org.apache.commons.lang.StringUtils;

String result = StringUtils.join(list, "\n");

十价卤、將一個(gè)字符串寫入某個(gè)文件中

import org.apache.commons.io.FileUtils;

FileUtils.writeStringToFile(new File(outputPath), text);

十一劝萤、將一個(gè)文件中的內(nèi)容讀出

import java.nio.file.Files;
import java.nio.file.Paths;

byte[] encoded = Files.readAllBytes(Paths.get(filePath));
String text = new String(encoded, "UTF-8");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冕房,一起剝皮案震驚了整個(gè)濱河市膛壹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耕驰,老刑警劉巖炸卑,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件既鞠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盖文,警方通過查閱死者的電腦和手機(jī)嘱蛋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來五续,“玉大人洒敏,你說我怎么就攤上這事「砑荩” “怎么了凶伙?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長它碎。 經(jīng)常有香客問我函荣,道長,這世上最難降的妖魔是什么扳肛? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任傻挂,我火速辦了婚禮,結(jié)果婚禮上挖息,老公的妹妹穿的比我還像新娘金拒。我一直安慰自己,他們只是感情好套腹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布绪抛。 她就那樣靜靜地躺著,像睡著了一般电禀。 火紅的嫁衣襯著肌膚如雪幢码。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天鞭呕,我揣著相機(jī)與錄音蛤育,去河邊找鬼宛官。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瓦糕,可吹牛的內(nèi)容都是我干的底洗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼咕娄,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼亥揖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圣勒,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤费变,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后圣贸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挚歧,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吁峻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滑负。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡用含,死狀恐怖矮慕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啄骇,我是刑警寧澤痴鳄,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站缸夹,受9級(jí)特大地震影響痪寻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜明未,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一槽华、第九天 我趴在偏房一處隱蔽的房頂上張望壹蔓。 院中可真熱鬧趟妥,春花似錦、人聲如沸佣蓉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇凭。三九已至疚膊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虾标,已是汗流浹背寓盗。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人傀蚌。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓基显,卻偏偏與公主長得像,于是被迫代替她去往敵國和親善炫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撩幽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348