如何在java中手动解析ics文件?

时间:2010-07-29 06:26:50

标签: java

您好我是java新手。我希望手动解析ics(outlook日历文件)。如果使用第三方api如何解析java中的ics文件?

2 个答案:

答案 0 :(得分:5)

如果不使用任何第三方库,您基本上必须编写自己的iCalendar(请参阅RFC 5545)解析器,以复制这些第三方库的工作。这不会很有趣。

不可否认,我自己使用iCal4j的经历并不十分愉快 - 但我不会使用java.util.Datejava.util.Calendar从头开始编写自己的解析器。您可能发现使用Joda Time编写iCalendar解析器以表示各个方面(“日期”,“时间”等)是值得的,因为这是一个比使用的更好的API。内置的...但同样你可能会发现iCal4j足以满足你的目的。

答案 1 :(得分:0)

您可以参考iCal4j的API文档 http://ical4j.sourceforge.net/introduction.html

这可能会帮助您进行解析,您可以参考以下代码:

{
    Properties prop = new Properties();

            prop.put("mail.smtp.auth", "true");
            prop.put("mail.smtp.starttls.enable", "true");
            prop.put("mail.smtp.host", "smtp.gmail.com");
            prop.put("mail.smtp.port", "587");
            final String username = "xx@xx"; //your email id
            final String password = "password"; //your password
            System.out.println(meeting);
             try {
                 Session session = Session.getInstance(prop, new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(username, password);
                        }
                    });

                    MimeMessage mimeMessage = new MimeMessage(session);
        Multipart multipart = new MimeMultipart("alternative");
        if (calendar != null) {
                        // Another part for the calendar invite
                        MimeBodyPart invite = new MimeBodyPart();
                        invite.setHeader("Content-Class", "urn:content-  classes:calendarmessage");
                        invite.setHeader("Content-ID", "calendar_message");
                        invite.setHeader("Content-Disposition", "inline");
                        invite.setContent(calendar.toString(), "text/calendar");
                        multipart.addBodyPart(invite);
                    }

                    mimeMessage.setContent(multipart);

                    Transport.send(mimeMessage);
}