调用Tomcat的输入流CoyoteInputStream中read方法一次只能读取8K 5C

图片说明

    图中fileStream是CoyoteInputStream类的实例。chunkBytes是一个2M大小的byte数组。
    fileStream的长度有9M多,我调用fileStream的read方法,希望能够读取2M数据到chunkBytes中,但是每次只能读取8K
我自己用BufferedInputStream读取数据,一次就能够读取到2M。为什么CoyoteInputStream就不能呢?
查阅了tomcat的官方文档,也没有对CoyoteInputStream的read方法作特别说明。下图是文档对CoyoteInputStream.read()方法的说明,没有什么特别之处。

图片说明

    使用CoyoteInputStream.read()方法到底是不是一次最多只能读取8K的数据?
    tomcat版本9.0.1,spring版本4.3.12

1个回答

mjyywd
mjyywd 文章里并没有说到流读的大小啊
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java中输入流中read()方法的使用
import java.io.*;rnpublic class InputExarnrnrn public static void main(String[] args) rn int b;rn byte tom[]=new byte[10];rn tryrn rn File f=new File("G://java code/jackxu/src","WaitExa.java");rn FileInputStream in=new FileInputStream(f);rn b=in.read(tom);rn String s=new String(tom);rn b=in.read(tom,0,5);rn s=new String(tom);rn System.out.println("第一次输出"+s);rn rn catch(IOException e) rn System.out.println("File Read Error"+e);rn rn in.close();rn rnrn rnrnrn上面的程序是读取WaitExa.java文件,把读取的字节转化为字符串输出,b=in.read(tom)这是第一个read()方法,它读取的字节数没确定,就由定义的字节数组确定。b=in.read(tom,0,5);这是第二次使用read()方法,这次规定了字节读取的顺序和长度,结果输出来的还是按第一次byte[10]中输出了10无序字符,这是怎么回事??
输入流read()方法的阻塞问题
我用的是Socket通信,接收发送数据都可以的,(当然是在有数据的情况下)rnrn但是read()方法如果碰到没有数据返回的情况,将会一直等待。等待。。等待。。。。rn这怎么办呢,rnrn我尝试过用定时器。不过这个也是一直等待。。有数据返回了之后才会继续执行rn请教各位高手,实在百度谷歌不到了。rnrn总不能一直等待等待吧
Java的输入流中的read(byte[] b)方法
public int read(byte[] b)          throws IOException从一个输入流中读取一定数量的字节,并将这些字节存储到其缓冲作用的数组b中。这个函数会返回一次性读取的字节数。这个函数是一个阻塞式的函数,当它读到有效数据、确认的文件尾(EOF)或者抛出一个异常时它才会执行其他语句,否则一直停在read()函数处等待。比如下面的列子:ServerSocket s...
关于read()读取的方法
请问read()不是读取下一个字节吗 ,它的返回值是int类型的,那为什么在system.out.print(b);可以输出读取的字节,rn这一点心我定义了int b=input.read()把的返回值给b了;
字节输入流 read 读取文件
字节输入流read方法可以传入不同的参数,实现读取文件的方式就不一样,推荐使用方法二。
session 只能调用一次??
用session把用户所填的信息从第一页带到第二页,和用户在第二页填的信息一起提交到数据库,不过好像只能调用一次,再次填的信息结果在第一页所填的信息输入到数据库还是显示上次所填的信息,怎么改?rnrn第一页代码:rn[code=PHP][/code]';rnrn?>rn';rnrn?>rn第二页代码:rn[code=PHP][/code]rn';?〉rn rn rnrn
rs.next() 只能调用一次
ResultSet rs ; rs.next() 只能调用一次 第一次: System.out.println(rs.next());          true 第二次 System.out.println(rs.next());          false
DLL只能调用一次
用vc编写的MFC Dll程序在C#中调用 dll提供的是DCOM的接口函数rn调用如下:rnnamespace AClasstestrnrnusing System.Runtime.InteropServices;rnusing System.ComponentModel;rn class CDllrn rn [DllImport("DcomDll.dll", EntryPoint = "test", SetLastError = true)]rn public static extern int test();rn rn public partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rnrn private void button1_Click(object sender, EventArgs e)rn rn int c = 0;rn c = CDll.test();rn if (c == 1)rn MessageBox.Show("1");rn elsern MessageBox.Show("0");rn rn rnrn在VS中编译后运行的时候不能够正确连接DCOM的服务,但是在生成好后的文件下运行的时候能够正确运行一次,然后后面就不成功。但在vc的应用程序的情况下是能够正常运行的。rn希望做过这方面的朋友帮忙解决下!
让动态链接库只能被调用一次的方法???
一个动态链接库,假设是ActiveX控件吧,希望只能被调用一次,有多少方法可以实现,最简单的方法是什么?
AS3.0中SharedObject只能读取一次
btn_save.addEventListener(MouseEvent.CLICK,btn_saveclick);rn//保存功能;rnfunction btn_saveclick(e:MouseEvent)rnrn chess_stay.data.chess_x = x2;//保存每一步下棋的坐标 rn chess_stay.data.chess_y = y2;//保存每一步下棋的坐标 rn chess_stay.data.chessStep = q;//保存棋子的步数 rn chess_stay.data.bb = aa;//保存棋子的状态 rn chess_stay.flush();rn chess_stay.close();rn //chess_stay=null;rn txt3.text="";rn txt1.text = "保存成功!";rnrnbtn_read.addEventListener(MouseEvent.CLICK,btn_readclick);rn//读取功能;rnfunction btn_readclick(e:MouseEvent)rnrn //btn4click(e);//调用重新开始的函数rn q = chess_stay.data.chessStep;rn x2 = chess_stay.data.chess_x;rn y2 = chess_stay.data.chess_y;rn aa = chess_stay.data.bb;rn chess_stay.close();rn //chess_stay=null;rn}rn我在做一个五子棋的游戏,我保存后必须得把游戏关了再开才能读取出来,读取完后其他参数都没变就是数组bb里面的东西全被清0了。如果保存后清空棋盘再读取出来就什么都没有。求大神帮忙指点一下谢谢
request.getInputStream()只能读取一次的解决方案
最近,接手一个相关项目,而前端传递参数都是已json方式,在拦截器中要对某个必传参数进行校验,我就使用request.getInputStream(),这样到了controller时,对象属性都为空,后来确定问题是由于request.getInputStream()只能够读取一次。但是在实际的开发中往往需要多次读取。这样就需要我们将流写入进去,提供后续使用。方法可能有很多, 1:创建Req...
流只能读取一次的问题
    问题描述,直接看图 上一段测试代码 public void test() { //string url = "https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=0&l=M&s=5&d=72&v=4&t=#{t}"; ...
输入流的读取
我使用readLine()这个方法读取输入的数据返回类型是String型,可是现在我想做一个循环来进行字符串的连接,要用Stringbuffer来连接获取的那个string,怎么办呢,有没有办法从string型转到Stringbuffer型,或是输入流的读取为Stringbuffer型。
Java中输入流的read()为阻塞式方法的相关实例
说来惭愧,本人学习Android已经半年有余,然收效甚微。也许想要保持学习的激情,不断有所进益,真得时常做些总结。 所以我决定通过写博文记录自己的学习状态,分享学习成果,总结一路上的坎坷辛苦。我想这样的反馈,是一种警示,也是一种鼓励。也将自己遇到的问题做一个系统性的解答和整理。 最近在写一个通信相关的线程。Android客户端通过TCP/IP协议与下位机进行通信。要求下位机每发送一个信号,客户端要将
请问高手输入流read问题
我在NOKIA7210 SDK上开个线程READ输入流,当他阻塞读时,模拟器就死了,键盘无响应,rn照理说应该另外开个线程,不影响主线程?请问如何解决?rnrn使用READY,就算有数据,结果一直返回FALSErnrn使用GETLENTH,一直返回0rn
ajax只能调用一次解决办法
前段时间遇到了一个问题,如果datatable对于同一个ajax调取第二次时没反应,查了很多网站发现在datatable的属性中加上"rn":Math.floor(Math.random()*100+1)
js-window.onload只能调用一次的问题!
详细:http://www.softwhy.com/forum.php?mod=viewthread&tid=6191 _addLoadEvent这个方法就是判断是否多次调用了onload,如果多次调用,就把多个调用的方法再Window.onload里面依次执行function _addLoadEvent(func) { var oldonload=window.onload; i
在java中实现,只能启动一次的方法。
在java中实现,同一个画面只能启动一次的方法。其中包括画面启动时候的处理,和画面关闭时候的处理。rn谢谢!
C#DataSet数据调用为啥只能调用一次
![图片说明](https://img-ask.csdn.net/upload/201604/23/1461380506_93971.jpg)n如图,a和name的数据都是正确的,我运行程序后第一次双击listbox1任何一个item都能调出正确的数据反馈到标签中,但是第二次以后双击反馈的数据还是第一次的,求大神解答,能改一下十分感谢。
只调用一次方法
碰到一个 ,问题 , 一个方法再一次登陆的过程中只能调用一次 ,否则  就抛异常 。    彪哥帮我搞定这个问题 ...   LoginInfo 对象里面在  Session 里面更新。         /** * 更新session中的登录信息 * * @param loginInfo * LoginResu...
inputstream中的read方法
为什么inputstream中的read()是抽象的,而read(byte[])却不是,为什么不都弄成抽象的或非抽象的
输入流对象cin读取输入流的三种方式
输入流对象cin读取输入流的三种方式cin 输入流对象有三种读取控制台输入的方法。分别为: 使用“>>”运算符,这种方法只能读取单个单词,cin使用空白(空格、制表符和换行符)来确定字符串的结束位置 使用getline()成员函数,getline()方法面向行的输入,它使用通过回车键输入的换行符来确定输入结尾,但是getline()方法并不保存换行符,在存储字符串时,它用空字符来替换换行符 使用ge
FileReader类里的read方法一次只能读取一个字节,但为什么一次能读取出二个字的汉字呢?
import java.io.*;rnrnpublic class ttrn rn public static void main(String args[]) throws IOExceptionrn FileReader fr = new FileReader("lyfcount.txt");rn int aChar = fr.read();rn System.out.println((char)aChar);rn rnrn参考上说使用不带参数的read方法,从输入流中的只能读取一个字节,但我在lyfcount.txt文本中输入了一个汉字(一个汉字是两个字节),却全能读出来,而输入两个字符(如ab,也是两个字节),为什么只能读出a来,为什么??
由输入流读取文件内容
1:获取流 [code="java"] //1 读取的文件相对于classes 根目录,用例如com/yz/createBpm.xml指定其他目录 Thread.currentThread().getContextClassLoader().getResourceAsStream(path); //2 读取的文件和类 CreateFile相同目录 CreateFile.class.get...
输入流读取String字符串
String gbk = "";        try {            InputStream is = request.getInputStream();            int streamLength = request.getContentLength();            byte[] b = new byte[streamLength];  
Socket读取输入流
使用Socket通信是读取输入流报错(Read timed out)然后确返回了一串空数据回来
Socket通信输入流读取问题
在第二次读取输入流信息时读取到的为null,第一次读取正常,这是为什么有什么解决的办法??rn读取如下rnBufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));rnString line = br.readLine();rn
有关inputstream流只能读取一次的问题
最近在学习servlete,无意中发现在以post方法提交表单信息后,在servlet端用getInputStream()接收实体信息后,再用getParameter()获取是,发现为null.我就十分困惑。代码如下                //post获取实体信息    getinputstream InputStream in = request.getInputStream
在SpringMVC框架下HttpServletRequest inputStream只能读取一次的问题
场景描述:在异常日中打印请求url和请求传入的参数 采用的方式:使用slf4j+logback管理日志,在进入controller前将参数放入MDC中,在logba.xml中使用<pattern>%d  - %X{requestBody} - %X{requestUrl} - %msg%n</pattern>输入日志 遇到问题:1、在获取body需采用获取request...
浅谈request.getinputstream只能读取一次的问题
首先,我们复习一下InputStream read方法的基础知识,   java InputStream read方法内部有一个,postion,标志当前流读取到的位置,每读取一次,位置就会移动一次,如果读到最后,InputStream.read方法会返回-1,标志已经读取完了,如果想再次读取,可以调用inputstream.reset方法,position就会移动到上次调用mark的位置,ma
输入流读取字符串问题。。。
[code=C/C++]#include rn#include rn#include rnrnTCHAR* wTitle=_T("推箱子");rnTCHAR* cTitle=_T("push");rnUINT const WIDE=600,HEIGHT=470;rnrnHDC hdc;rnPAINTSTRUCT ps;rnrnHFONT hf;rnTCHAR ch[100];rnFILE* fp;rnrnHINSTANCE hInst;rnLRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);rnrnint APIENTRY _tWinMain(HINSTANCE hInstance,rn HINSTANCE hPrevInstance,rn LPTSTR lpCmdLine,rn int nCmdShow)rnrn //(1)注册窗口//rn WNDCLASSEX wcex; //注册窗口类//rn wcex.cbSize = sizeof(WNDCLASSEX);rn wcex.style = CS_HREDRAW | CS_VREDRAW; //类窗口风格//rn wcex.lpfnWndProc = WndProc; //消息处理函数//rn wcex.cbClsExtra = 0; rn wcex.cbWndExtra = 0; rn wcex.hInstance = hInstance; //程序运行进程//rn wcex.hIcon = NULL; //图标//rn wcex.hCursor = LoadCursor(NULL, IDC_ARROW); //鼠标指针//rn wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //背景色//rn wcex.lpszMenuName = NULL; //菜单名//rn wcex.lpszClassName = cTitle; //类名//rn wcex.hIconSm = NULL; //小图标//rn RegisterClassEx(&wcex); //注册窗口//rnrnrn //(2)创建窗口//rn HWND hWnd;rn hInst = hInstance; rn hWnd = CreateWindow( cTitle, /*类名*/rn wTitle, /*标题栏*/rn WS_OVERLAPPEDWINDOW, /*窗口风格*/rn CW_USEDEFAULT, 0, WIDE, HEIGHT, /*窗口坐标,窗口宽高*/rn NULL, NULL,hInstance, NULL);rnrn //(3)显示窗口//rn ShowWindow(hWnd, nCmdShow);rnrn //(4)更新窗口//rn UpdateWindow(hWnd);rnrn //(5)消息循环//rnrn MSG msg;rn while (GetMessage(&msg, NULL, 0, 0))rn rn TranslateMessage(&msg);rn DispatchMessage(&msg);rn rnrn //(6)注销窗口//rn return (int) msg.wParam;rnrnrnrnrnLRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)rnrn switch (message)rn rn case WM_CREATE:rn rn fp=fopen("talk.txt","r");rn hf=CreateFont(20,0,0,1800,1500,0,0,0,GB2312_CHARSET,0,0,0,0,_T("微软雅黑"));rn SetTimer(hWnd,1,80,NULL);rn rn break;rn case WM_TIMER:rnrnrn InvalidateRect(hWnd,NULL,FALSE);rn break;rn case WM_PAINT:rn rn hdc=BeginPaint(hWnd,&ps);rn SelectObject(hdc,hf);rnrn// SetTextColor(hdc,RGB(255,255,255));rn// SetBkColor(hdc,RGB(0,0,0));rnrn //OutputDebugStr(ch);rn fscanf(fp,"%c",&ch);rn RECT rect=100,150,WIDE,HEIGHT;rn DrawTextW(hdc,ch,_tcslen(ch),&rect,DT_LEFT|DT_TOP);rnrn //TextOut(hdc,0,100,ch,100);rnrnrn EndPaint(hWnd,&ps);rn rn break;rn case WM_DESTROY:rn PostQuitMessage(0);rn break;rn default:rn return DefWindowProc(hWnd, message, wParam, lParam);rn rn return 0;rn[/code]rnrn求高手帮忙看看,为什么以上代码绘制字符串是乱码?rnrn说明,在项目文件夹下,新建一个test.txt文件。。。在里面随便输入多行汉字,然后运行以上代码,就能看到问题所在了。。。。球求高手解答。。。谢谢
输入流读取失败的问题
在我编数据结构时经常碰到要用户输数字的情况,但是如果这时输入的是字符,cin就会失败,下一次用cin<>num))rn rn cout<<"Please input a number:\n";rn rn当输入d时就进入死循环,请问怎么改?
根据输入流读取文件类型
public static String guessContentTypeFromStream(String urlStr) {         URL url;         try {             url = new URL(urlStr);             HttpURLConnection conn = (HttpURLConnection) url.open
socket编程读取输入流的疑惑
服务器获取客户端信息的代码大致如下rnInputStream is = socket.getInputStream();rnbyte[] buffer = new byte[1024];rnint length = is.read(buffer);rnString msg = new String(buffer,0,length);rnrn为什么以下的写法是错误的rnInputStream is = socket.getInputStream();rnbyte[] buffer = new byte[1024];rnint length = 0;rnwhile((length = is.read(buffer)) != -1)rn String msg = new String(buffer,0,length);rn
解决request.getInputStream()只能读取一次的问题
request.getInputStream()只能够读取一次,但是在实际的开发中往往需要多次读取。这样就需要我们将流写入进去,提供后续使用。方法可能有很多, 这里提供其中一种! 1:创建HttpHelper类获取流中的数据。 public class HttpHelper { /** * 获取请求Body * @param request * @re
SqlServer7的text字段为何只能读取一次。
一条记录有两个text字段,读取第一个text字段时正常,读取第二个text字段时就出错。rn若先读取其他类型的字段,再读取text字段,正常。若先读取text字段,再读取其他类型的字段,返回值为空了。rn大侠们碰到过这情况吗?rn我是用adodb,odbc来连接的
读取输入流数据问题
首先 InputStream is = socket.getInputStream()rn String str = "";rn 然后 int len = is.ream(buf);rn 最后 for(int i = 0; i < len ;i ++)rn str += "" + buf[i]rn rn rn 老是数据读不全,不知道是怎么会事rn 比如:55 aa 10 01 01 00 00 00 03 02 01 共11个字节rn 但是 我读到的总是不够 ,或者是截断的 ,请指点
/*Java 输入流(读取txt文件)*/
读取txt文件有两种方式,第一种是字符型读取,第二种是字节型读取。一.字符型读取package cn.newdream.class68.chapter04; import java.io.FileReader; import java.io.IOException; public class CharReader_02 { public static void main(String[]
怎么锁定方法,一次只能一个地方调用,其他的排队
如题,谢谢
struts2 相同的请求只能调用一次action的方法
S2SH 中 相同的请求只能调用1次action..没用令牌求解...一下代码:rnhtml调用的代码rnAction配置:rn[code=XML]rnrn /flse.jsprn /OK.jsprn /userzz/infoMain.htmlrn rn[/code]rn[code=HTML]rn收信箱 rn不管是直接写href还是用url标签算过的url 只要url没变一个浏览器只能调用一次 infoInitAction的execute()方法除非关闭浏览器重新开下...否则绝对不会调用第二次= =怎么点击这个链接也不会..javascript也用过了...= =rn实验了下rn收信箱 rn只有这样加上随即数改变请求链接后才会调用Action的方法..不过这样需要每次都刷新..= =..rn[/code]rn请问是配置什么了?我没有配置令牌= =...求解..初次接触S2SH= =rn
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数

相似问题

12
java开发中调用一个接口的方法时是怎么调用到该接口的实现类的?
9
javascript中方法重载,方法同名,参数列表不同,调用函数的时候到底调用哪个函数?
6
调用别人的rest接口,本地测试返回不乱码,运行在tomcat上会出现部分中文乱码,跪求大神
5
JAVA中的对象只能调用成员变量和方法吗?
1
为什么启动tomcat会调用ServletContextAttributeListener的attributeAdded方法。
1
Module的effects中的某个方法call了一个接口,接口报错catch后再调用该方法为什么进不去这个方法了?
8
使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码
1
利用tomcat定时器调用sendRequest()
2
微信 企业付款接口 调用ip问题
2
有没有大神告诉我一下 c++中 一个类 创建了很多对象如何快速调用这些对象的同一个方法
0
Spring Cloud Feign模块之间调用。A验证登录权限后,开始调用B,A的Authorization和B是共享的吗?
2
如何在java里调用使用get方法,参数以application/x-www-form-urlencoded方式传递的web接口?
2
关于继承的问题,无法调用override后的方法
4
JAVA后端调用http Post请求,url后面拼接参数报错
1
java中静态方法为什么无法调用非静态变量或者方法
1
java中局部类调用它所在的局部方法中的变量问题
2
为什么同一个service下的synchronized方法调用另一个@Transaction方法,并发还会产生脏读,错误数据?
2
【求助】Python中如何使具有相同父类中的两个子类之间进行方法调用
2
JNA 调用 class内部方法的 c++接口
0
Stream流中将int类型转换为String类型,为何不能直接引入Integer的toString方法