想必這個曲線你們都認識,這是遺忘曲線,展現人的記憶會隨着時間的延長慢慢遺忘的規律,同時還展現了若是咱們過一段時間複習一次對遺忘的有利影響.java
道理你們都懂,關鍵怎麼作到?小程序
靠在本子上記下今天我該複習哪一天的知識?或者手機上設定一個提醒?....app
不,這些方法都太麻煩又難受了,由於光安排複習時間,就得讓你寫很長時間,並且複習的時候還得對照它們再去找對應的筆記.ui
今天我就跟你們分享一款我根據遺忘曲線本身開發的一款java小程序:spa
只要你告訴它首尾日期和磁盤地址,它就給你生成有規律的複習計劃,像這樣:code
打開20190325.doc裏面是這樣的:orm
仔細看,裏面日期的規律,前一天,前3天,前7天,前15天.......blog
對!反遺忘複習規律就在這裏!!!ip
廢話很少說,下面給你們分享代碼:開發
=======================================================
package com.huawei.it.helloworld;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author 一馬平川1
* @date 2019/2/19 23:02
* @description
*/
public class BatchCreateNoteFiles {
private static final int ADD_ONE_DAY = 1 ;
public static void main(String[] args) throws IOException, ParseException {
BatchCreateNoteFiles batchCreateNoteFiles = new BatchCreateNoteFiles();
//按以下格式填入起止日期和生成文件的磁盤地址
batchCreateNoteFiles.createFile("20190220","20200220","E:\\MyNotes\\");
}
//生成文件
public void createFile(String startDate,String endDate,String location) throws ParseException, IOException {
String prefix = location;
String suffix = ".doc";
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
String fileName = startDate;
while (Integer.parseInt(fileName) <= Integer.parseInt(endDate)){
File file = new File(prefix+fileName+suffix);
//給文件寫入內容
initFile(file,fileName,f);
Calendar instance = Calendar.getInstance();
instance.setTime(f.parse(fileName));
instance.add(Calendar.DAY_OF_MONTH,BatchCreateNoteFiles.ADD_ONE_DAY);
fileName = f.format(instance.getTime());
}
}
//給文件寫入內容(文件內容初始化)
private void initFile(File file, String fileName, SimpleDateFormat f) throws IOException, ParseException {
FileOutputStream fs = new FileOutputStream(file);
fs.write(getInitContent(fileName,f).getBytes());
}
//獲取文件初始化內容
private String getInitContent(String fileName, SimpleDateFormat f) throws ParseException {
Date noteDate = f.parse(fileName);
Calendar instance = Calendar.getInstance();
instance.setTime(noteDate);
StringBuilder sb = new StringBuilder("[");
//獲取1天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取3天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 1);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取7天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 2);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取15天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 3);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取31天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 4);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取63天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 5);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取127天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 6);
sb.append(f.format(instance.getTime())).append("]-[");
//獲取255天以前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 7);
sb.append(f.format(instance.getTime())).append("]");
return sb.toString();
}
}
=======================================================================
本小程序的功能目標是:能自動給文檔中初始化的日期內容添加上各自的超連接,這樣就不用手動添加超連接了,若是你知道怎麼操做,請大俠留言,謝謝!
本小程序接下來將利用Swing作一個親和的界面,固然這不是重點,主要是更人性化一些.
此外,本博主想問問:怎麼將java小程序封裝成能雙擊啓動的EXE程序?若是能這樣,那這個小程序就很完美了!
大俠,請留下您寶貴的建議!