我正在尝试通过 HttpServlet (tomcat) 处理一个大文本文件。
由于这个文件可能很大并且过程应该非常快,我不想将文件上传到服务器上,我已经使用该方法HttpRequest.getInputStream
即时处理输入。例如,我想使用以下代码将输入转换为大写:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class EchoServlet extends HttpServlet
{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
OutputStream out=null;
InputStream in=req.getInputStream();
if(in==null) throw new IOException("input is null");
try
{
resp.setContentType("text/plain");
out=resp.getOutputStream();
int c;
while((c=in.read())!=-1)
{
out.write((char)Character.toUpperCase(c));
}
}
catch(IOException err)
{
//ignore
}
finally
{
if(out!=null) out.flush();
if(out!=null) out.close();
in.close();
}
}
}
我用 CURL 调用了我的 servlet:
curl -s -d @big.file.txt "http://localhost:8080/test/toupper"
1)通过servlet即时处理输入,这是一种好的/常见的做法吗?
2)我的代码似乎删除了回车符 ('\n') 。为什么 ?
谢谢