Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符添加到BufferedInputStream java的末尾_Java_Jakarta Mail_Bufferedinputstream - Fatal编程技术网

将字符添加到BufferedInputStream java的末尾

将字符添加到BufferedInputStream java的末尾,java,jakarta-mail,bufferedinputstream,Java,Jakarta Mail,Bufferedinputstream,我从MimeMessage收到输入流。在InputStream中,我要在末尾添加\r\n。\r\n 表示消息的结尾 请建议。只需将InputStream值存储在字符串中,然后将其添加到该字符串中: BufferedReader input; if(stream != null){ input = new BufferedReader(new InputStreamReader( stream)); String respo

我从MimeMessage收到输入流。在InputStream中,我要在末尾添加\r\n。\r\n

表示消息的结尾


请建议。

只需将InputStream值存储在字符串中,然后将其添加到该字符串中:

    BufferedReader input;

    if(stream != null){
        input = new BufferedReader(new InputStreamReader(
                stream));
    String responseLine = "";
    String server_response = "";
    try {
        while (((responseLine = input.readLine()) != null) {
             server_response = server_response + responseLine  + "\r\n";
        }
    } catch (IOException e) {

    }
    server_response = server_response + "\r\n.\r\n";
  }

我错过什么了吗?或者这就是您要求的?

只需将InputStream值存储在字符串中,然后将其添加到该字符串中:

    BufferedReader input;

    if(stream != null){
        input = new BufferedReader(new InputStreamReader(
                stream));
    String responseLine = "";
    String server_response = "";
    try {
        while (((responseLine = input.readLine()) != null) {
             server_response = server_response + responseLine  + "\r\n";
        }
    } catch (IOException e) {

    }
    server_response = server_response + "\r\n.\r\n";
  }

我错过什么了吗?或者这就是你想要的?

你可以用

public class ConcatInputStream extends InputStream {
    private final InputStream[] is;
    private int last = 0;

    ConcatInputStream(InputStream[] is) {
        this.is = is;
    }

    public static InputStream of(InputStream... is) {
        return new ConcatInputStream(is);
    }

    @Override
    public int read(byte[] b, int off, int len) throws IOException {
        for (; last < is.length; last++) {
            int read = is[last].read(b, off, len);
            if (read >= 0)
                return read;
        }
        throw new EOFException();
    }

    @Override
    public int read() throws IOException {
        for (; last < is.length; last++) {
            int read = is[last].read();
            if (read >= 0)
                return read;
        }
        throw new EOFException();
    }

    @Override
    public int available() throws IOException {
        long available = 0;
        for(int i = last; i < is.length; i++)
            available += is[i].available();
        return (int) Math.min(Integer.MAX_VALUE, available);
   }
}

您可以使用

public class ConcatInputStream extends InputStream {
    private final InputStream[] is;
    private int last = 0;

    ConcatInputStream(InputStream[] is) {
        this.is = is;
    }

    public static InputStream of(InputStream... is) {
        return new ConcatInputStream(is);
    }

    @Override
    public int read(byte[] b, int off, int len) throws IOException {
        for (; last < is.length; last++) {
            int read = is[last].read(b, off, len);
            if (read >= 0)
                return read;
        }
        throw new EOFException();
    }

    @Override
    public int read() throws IOException {
        for (; last < is.length; last++) {
            int read = is[last].read();
            if (read >= 0)
                return read;
        }
        throw new EOFException();
    }

    @Override
    public int available() throws IOException {
        long available = 0;
        for(int i = last; i < is.length; i++)
            available += is[i].available();
        return (int) Math.min(Integer.MAX_VALUE, available);
   }
}


只要加上它,有什么问题吗?@muhammedreaat如何加上?请解释使用java代码。您需要在生成文本时添加它。另一种选择是编写链接流,但这要困难得多。为什么要这样做?POP3和SMTP协议的功能类似,但请注意,它们还需要处理消息中仅包含“.”的行。您的用例需要您处理吗?你可能想看看。另外,如果您使用的是getInputStream方法,请注意,您没有获取消息的标题。如果你想要邮件头,你需要使用writeTo方法。@BillShannon正如我在上一篇文章中提到的,当smtp服务器托管在本地时,我正在尝试使用Javamail发送邮件。只需添加它,有什么问题吗?@Muhammedreat如何添加?请解释使用java代码。您需要在生成文本时添加它。另一种选择是编写链接流,但这要困难得多。为什么要这样做?POP3和SMTP协议的功能类似,但请注意,它们还需要处理消息中仅包含“.”的行。您的用例需要您处理吗?你可能想看看。另外,如果您使用的是getInputStream方法,请注意,您没有获取消息的标题。如果你想要标题,你需要使用writeTo方法。@BillShannon正如我在上一篇文章中提到的,当smtp服务器托管在本地时,我试图利用Javamail发送邮件。@PeterLawrey我将InputStream放在一个while循环中读取所有的输入行,直到最后,你认为他想用
“\r\n”标识该行。\r\n
?我所理解的是,他想在输入的末尾添加它,正如他所说的“在结尾我想添加”事实上我不知道,可能你是对的,也可能是我是对的,我想他必须做一点说明more@PeterLawrey我把InputStream放在一个while循环中,读取所有的输入行,直到最后,您认为他想用
“\r\n”标识行。\r\n”
?我的理解是,他想在输入的末尾加上它,就像他说的“在结尾我想加上”事实上我不知道,可能你是对的,也可能我是对的,我想他必须再说明一点,我会使用while循环或其他什么,增量之前的返回对我来说有点太狡猾了:)@md_5想象一下你正在从一个文件发送一封大电子邮件。此解决方案允许您一次读取几KB的数据块,最后在末尾发送
。如果首先读取所有数据,则需要使用文件大小的至少1-2倍,这可能并不理想@顺便问一下,你来自墨尔本的哪个地区?我在埃尔塔姆北部长大。@PeterLawrey不支持返回输入流。在Concat之前,首先支持inputstream。如何将concated inputstream设置为支持标记。@Roshan您需要覆盖标记()、标记支持()和重置();我会使用while循环或其他方法,在增量之前返回对我来说太狡猾了:)@md_5想象一下你正在从一个文件发送一封大型电子邮件。此解决方案允许您一次读取几KB的数据块,最后在末尾发送
。如果首先读取所有数据,则需要使用文件大小的至少1-2倍,这可能并不理想@顺便问一下,你来自墨尔本的哪个地区?我在埃尔塔姆北部长大。@PeterLawrey不支持返回输入流。在Concat之前,首先支持inputstream。如何将concated inputstream设置为支持标记。@Roshan您需要覆盖标记()、标记支持()和重置();