我的这个jsp文件显示中文没问题<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>
<body bgcolor="#f8f8f8" text="#000000">
<%
BufferedReader reader = new BufferedReader(new FileReader("D:/Develope/C++Builder编程.txt"));
String stringLine;
while((stringLine = reader.readLine()) != null ) {
out.println("<nobr>" + stringLine + "<br>");
}
%>
</body>
</html>
<%@ page import="java.io.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
</head>
<body bgcolor="#f8f8f8" text="#000000">
<%
BufferedReader reader = new BufferedReader(new FileReader("D:/Develope/C++Builder编程.txt"));
String stringLine;
while((stringLine = reader.readLine()) != null ) {
out.println("<nobr>" + stringLine + "<br>");
}
%>
</body>
</html>
<%@ page import="java.io.*"%>
<html>
<head>
</head>
<body>
</body><%
int b;
byte buffer[]=new byte[1024];
try
{
FileInputStream readfile=new FileInputStream("c:\\bc.txt");
try
{
int length = -1;
while((length = is.read(buffer))>-1){
String ss=new String(b,0,length,"gb2312");
System.out.println(ss) ;
out.println(ss);
}
}
catch(UnsupportedEncodingException e)
{System.out.println("the");}
}
catch(IOException e)
{System.out.println("file read error");}%>
</html>
分3步
1. 读出文件长度length
2. 设置每次输出的长度为1024字节,
3. 开始循环,直到输出所有的内荣为止
moumouren(某某人) 的解决方案JBuilder 7 Enterprise编译出现一个错误如下。
exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:84: Undefined variable or class name: is
while((length = is.read(buffer))>-1){
^
An error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:85: Variable b may not have been initialized.
String ss=new String(b,0,length,"gb2312");
^
An error occurred between lines: 15 and 36 in the jsp file: /Jsp1.jspGenerated servlet error:
D:\jsp\blob_and_clob\Tomcat\work\Jsp1$jsp.java:85: Incompatible type for constructor. Can't convert int to byte[].
String ss=new String(b,0,length,"gb2312");
^
3 errors at org.apache.jasper.compiler.Compiler.compile(Compiler.java:285)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:552)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:177)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:189)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)
at java.lang.Thread.run(Thread.java:484)
JetKingLau(时差) 的50分我一定给,就等第二个问题的答案了。
平台字符集一致。
2。不明白你为什么要用这么复杂的方法把一个txt读到ie里面。不要忘了ie是个容器,txt文件本来就可以显示的。只要设置一下http的meta 就可以了。
while((stringLine = reader.readLine()) != null ) {
out.println("<nobr>" + stringLine + "<br>");
}如果要在读完整个文件的内容后,再写到页面,可以用向量Vector:
Vector vectorString = new Vector();
String stringLine;
while((stringLine = bufferedReader.readLine()) != null) {
vectorString.addElement(stringLine);
}访问该向量中第index个元素:
String tmpString = String.valueOf(vectorString.elementAt(index));
但byte buffer[]=new byte[2500000];实在不欣赏
基本代码 理解就好,要自己调试,我也得有分吧
File f= new File("abc.txt);
long fileLength = f.length();
byte[] b = new byte[1024];
...............
String filesize = Long.toString(fileLength);
response.setHeader("Content-length",filesize);
long totalSize = 0;
while(totalSize<fileLength)
{
totalSize +=1024;
if(totalSize>fileLength)
{
// the last past
byte[] lastPart = new byte[1024-(int)(totalSize-fileLength);
in.read(leftPart);
}
else
{
in.read(b);
}