如何从Java中的txt文件提取以下信息

时间:2018-07-10 20:43:00

标签: java file javamail

例如,我正在写一封基于电子邮件(控制台)的应用程序,很有趣。我试图将文件合并到其中以从中读取信息。例如,如果我的txt格式如下,如何读取每个变量?

Server: gmail
User: test@mail.com
Password: pass123
To: to@mail.com
CC: to@mail.com, to@mail.com, to@mail.com
BCC: to@mail.com, to@mail.com
Subject: subject
Body: 123
454
6464
This is still part of the body
File: filename.zip

但是,我认为CC和BCC应该是一个字符串数组,对吧?

2 个答案:

答案 0 :(得分:0)

您尝试过JavaMail吗?您包括了该标签,所以我假设您知道它是什么。

使用MimeMessage constructor that takes an InputStream。请注意,该文件实际上必须为MIME格式,上面的示例并不完全是这样。

答案 1 :(得分:0)

正如Bill Shannon所说,您的问题有点含糊,但我认为您正在尝试寻找一种从文本文件中读取键/值对的方法,以便您可以使用这些方法以编程方式编写电子邮件。如果是这样,我相信您会希望通过执行以下操作来进行操作。

首先,您上面列出的数据本质上是名称/值对,分隔为:

name1: value1
name2: value2
...
nameN: valueN

如果是这样,则正确的约定是使用.properties文件。为此,您希望将键/值对定界为:

name1=value1
name2=value2
...
nameN=valueN

因此,您上面的数据将类似于:

server=gmail
user=test@mail.com
password=pass123
to=to@mail.com
cc=cc1@mail.com,cc2@mail.com,cc3@mail.com
bcc=to@mail.com,to@mail.com
subject=This is my Subject
body=123 \
454 \
6464 \
This is still part of the body
file.name=filename.zip

请注意,在“ body”属性的每一行末尾都应使用反斜杠。这些逃脱了换行符,使您最终只剩下一行。

如果将以上内容保存到名为email.properties的文件中,则可以像这样在Java程序中访问它们:

import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;

public class EmailComposer {

    public static void main(String[] args) throws IOException {

        Properties properties = new Properties();
        properties.load(new FileReader("email.properties"));

        for (Map.Entry<Object, Object> property : properties.entrySet()) {
            String key = property.getKey().toString();
            String value = property.getValue().toString();
            System.out.printf("%s --> [%s]\n", key, value);
        }
    }
}

将产生以下输出:

cc --> [cc1@mail.com,cc2@mail.com,cc3@mail.com]
server --> [gmail]
user --> [test@mail.com]
body --> [123 454 6464 This is still part of the body]
bcc --> [to@mail.com,to@mail.com]
subject --> [This is my Subject]
to --> [to@mail.com]
password --> [pass123]
file.name --> [filename.zip]