Discuss / Java / IDE练习插件里的代码有错误,原来的代码状态变量open为true,在调用本身的getInputStream的方法,状态变量open为true会导致抛出异常

IDE练习插件里的代码有错误,原来的代码状态变量open为true,在调用本身的getInputStream的方法,状态变量open为true会导致抛出异常

Topic source

飞离普

#1 Created at ... [Delete] [Delete and Lock User]
@Override
	public ServletInputStream getInputStream() throws IOException {
		if (open) {
			throw new IllegalStateException("Cannot re-open input stream!");
		}
		open = true;
		return new ServletInputStream() {
			private int offset = 0;

			@Override
			public boolean isFinished() {
				return offset >= body.length;
			}

			@Override
			public boolean isReady() {
				return true;
			}

			@Override
			public void setReadListener(ReadListener listener) {
			}

			@Override
			public int read() throws IOException {
				if (offset >= body.length) {
					return -1;
				}
				int n = body[offset] & 0xff;
				offset++;
				return n;
			}
		};
	}

	@Override
	public BufferedReader getReader() throws IOException {
		if (open) {
			throw new IllegalStateException("Cannot re-open reader!");
		}
		open = true;
//      原来的代码
//		return new BufferedReader(new InputStreamReader(getInputStream(), "UTF-8"));
		return new BufferedReader(new InputStreamReader(new ByteArrayInputStream(body), "UTF-8"));
	}

  • 1

Reply