使用Java编写.ics iCal文件
作者:互联网
我正在尝试使用java实现我自己的iCal创建者,由于某种原因,我无法识别我的.ics文件.我想知道我做错了什么,我可以得到与维基百科的示例完全一样的输出. .ics文件和程序生成后的文件之间有什么区别.
他们的例子:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
我的.ics文件
BEGIN:VCALENDAR
VERSION:1.0
PRODID://Elara/lofy/tanare/delp/314sum2015//
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
这是用于生成.ics文件的代码.
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
public class iCal {
private String version = "VERSION:1.0 \n";
private String prodid = "PRODID://Elara/lofy/tanare/delp/314sum2015// \n";
private String calBegin = "BEGIN:VCALENDAR \n";
private String calEnd = "END:VCALENDAR \n";
private String eventBegin = "BEGIN:VEVENT \n";
private String eventEnd = "END:VEVENT \n";
public void iCal(){
}
public void write( String name ){
StringBuilder builder = new StringBuilder();
builder.append(name);
builder.append(".ics");
String testExample = "UID:uid1@example.com\nDTSTAMP:19970714T170000Z\nORGANIZER;
CN=John Doe:MAILTO:john.doe@example.com\nDTSTART:19970714T170000Z
\nDTEND:19970715T035959Z\nSUMMARY:Bastille Day Party\n";
try {
File file = new File(builder.toString());
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(calBegin);
bw.write(version);
bw.write(prodid);
bw.write(eventBegin);
bw.write(testExample);
bw.write(eventEnd);
bw.write(calEnd);
bw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方法:
您可以使用iCal4j API进行日历.
标签:icalendar,java 来源: https://codeday.me/bug/20191028/1950060.html