请教一下:如何直接下载,而不是客户端环境打开?! 应该不会吧,呵呵我用过JSPsmart的上传下载文件的类,还可以,但是有部分达不到我的要求。希望大家多讨论一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java中对文件的操作 java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。 1。新建目录<%@ page contentType="text/html;charset=gb2312"%><%String filePath="c:/aaa/";filePath=filePath.toString();//中文转换java.io.File myFilePath=new java.io.File(filePath);if(!myFilePath.exists())myFilePath.mkdir();%> 2。新建文件<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.io.*" %><%String filePath="c:/哈哈.txt";filePath=filePath.toString();File myFilePath=new File(filePath);if(!myFilePath.exists())myFilePath.createNewFile();FileWriter resultFile=new FileWriter(myFilePath);PrintWriter myFile=new PrintWriter(resultFile);String strContent = "中文测试".toString();myFile.println(strContent);resultFile.close();%> 3。删除文件<%@ page contentType="text/html;charset=gb2312"%><%String filePath="c:/支出证明单.xls";filePath=filePath.toString();java.io.File myDelFile=new java.io.File(filePath);myDelFile.delete();%> 4。文件拷贝<%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.io.*" %><%int bytesum=0;int byteread=0; file://读到流中InputStream inStream=new FileInputStream("c:/aaa.doc");FileOutputStream fs=new FileOutputStream( "d:/aaa.doc");byte[] buffer =new byte[1444];int length;while ((byteread=inStream.read(buffer))!=-1) { out.println("<DT><B>"+byteread+"</B></DT>"); bytesum+=byteread; System.out.println(bytesum); fs.write(buffer,0,byteread); } inStream.close(); %> 5。整个文件夹拷贝<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.io.*" %><%String url1="C:/aaa"; String url2="d:/java/"; (new File(url2)).mkdirs(); File[] file=(new File(url1)).listFiles(); for(int i=0;i<file.length;i++){ if(file[i].isFile()){ file[i].toString(); FileInputStream input=new FileInputStream(file[i]); FileOutputStream output=new FileOutputStream(url2+"/"+(file[i].getName()).toString()); byte[] b=new byte[1024*5]; int len; while((len=input.read(b))!=-1){ output.write(b,0,len); } output.flush(); output.close(); input.close(); } }%> 6。文件下载<%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.io.*" %><% String fileName = "zsc104.swf".toString();//读到流中InputStream inStream=new FileInputStream("c:/zsc104.swf");//设置输出的格式 response.reset(); response.setContentType("bin"); response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");//循环取出流中的数据 byte[] b = new byte[100]; int len; while((len=inStream.read(b)) >0) response.getOutputStream().write(b,0,len); inStream.close(); %> 7。数据库字段中的文件下载<%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.sql.*"%><%@ page import="java.lang.*" %><%@ page import="java.io.*" %><%@ page import="com.jspsmart.upload.*" %><%@ page import="DBstep.iDBManager2000.*"%><%int bytesum=0;int byteread=0;//打开数据库ResultSet result=null;String Sql=null;PreparedStatement prestmt=null; DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();DbaObj.OpenConnection();//取得数据库中的数据Sql="select * from t_local_zhongzhuan ";result=DbaObj.ExecuteQuery(Sql);result.next();file://将数据库中的数据读到流中 InputStream inStream=result.getBinaryStream("content"); FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");byte[] buffer =new byte[1444];int length;while ((byteread=inStream.read(buffer))!=-1) { out.println("<DT><B>"+byteread+"</B></DT>"); bytesum+=byteread; System.out.println(bytesum); fs.write(buffer,0,byteread); }%> 8。把网页保存成文件<%@ page import="java.text.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%@ page import="java.net.*"%><% URL stdURL = null; BufferedReader stdIn = null; PrintWriter stdOut = null; try { stdURL = new URL("http://www.163.com"); } catch (MalformedURLException e) { throw e; }try { stdIn = new BufferedReader(new InputStreamReader(stdURL.openStream())); stdOut = new PrintWriter(new BufferedWriter(new FileWriter("c:/163.html"))); } catch (IOException e) { } /***把URL指定的页面以流的形式读出,写成指定的文件***/ try { String strHtml = ""; while((strHtml = stdIn.readLine())!=null) { stdOut.println(strHtml); } } catch (IOException e) { throw e; } finally { try { if(stdIn != null) stdIn.close(); if(stdOut != null) stdOut.close(); } catch (Exception e) { System.out.println(e); } }%> 9。直接下载网上的文件<%@ page import="java.io.*"%><%@ page import="java.net.*"%><%int bytesum=0;int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif"); URLConnection conn = url.openConnection(); InputStream inStream = conn.getInputStream(); FileOutputStream fs=new FileOutputStream( "c:/abc.gif"); byte[] buffer =new byte[1444]; int length; while ((byteread=inStream.read(buffer))!=-1) { out.println("<DT><B>"+byteread+"</B></DT>"); bytesum+=byteread; System.out.println(bytesum); fs.write(buffer,0,byteread); }*> 6。文件下载<%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.io.*" %><% String fileName = "zsc104.swf".toString();//读到流中InputStream inStream=new FileInputStream("c:/zsc104.swf");//设置输出的格式 response.reset(); response.setContentType("bin"); response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");//循环取出流中的数据 byte[] b = new byte[100]; int len; while((len=inStream.read(b)) >0) response.getOutputStream().write(b,0,len); inStream.close(); %>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢? 谢谢大家。我还想知道,如何在下载文件的时候,优先去找网络蚂蚁,flashget等下载工具呢?! 6。文件下载<%@ page contentType="text/html; charset=gb2312" %><%@ page import="java.io.*" %><% String fileName = "zsc104.swf".toString();//读到流中InputStream inStream=new FileInputStream("c:/zsc104.swf");//设置输出的格式 response.reset(); response.setContentType("bin"); response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");//循环取出流中的数据 byte[] b = new byte[100]; int len; while((len=inStream.read(b)) >0) response.getOutputStream().write(b,0,len); inStream.close(); %>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢?并且不可下载,说没有这个文件,只有在第二次打开时才可以显示下载的文件名,才可以正常下载? <%@ page import="java.io.*"%><%@ page import="java.net.*"%><%int bytesum=0;int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif"); URLConnection conn = url.openConnection(); InputStream inStream = conn.getInputStream(); FileOutputStream fs=new FileOutputStream( "c:/abc.gif"); byte[] buffer =new byte[1444]; int length; while ((byteread=inStream.read(buffer))!=-1) { out.println("<DT><B>"+byteread+"</B></DT>"); bytesum+=byteread; System.out.println(bytesum); fs.write(buffer,0,byteread); }%>晕!老大不关闭文件的?这样文件下载以后不允许进行操作啊!加上一句吧:fs.close();OK??? servlet里面用script弹框为什么不显示那 jsp中生成json数据有什么现成的开源库可以用呢? 做项目遇到的flex VO映射问题 各位高手帮忙看看 高分求解Hibernate 注解錯誤 帮我看看tomcat配置文件谢谢..,有没什么问题,访问时快时慢 How to use the "logic:iterate"? 请高手解决??? 如何判断 ResultSet Rs 为空? 菜鸟的问题………… 请问如何设置 JSP 页面的字符代码页?(显示汉字为问号) 問個很急的問題,請大俠盡快幫忙! 謝謝先! 中文参数提交问题
<%
String filePath="c:/aaa/";
filePath=filePath.toString();//中文转换
java.io.File myFilePath=new java.io.File(filePath);
if(!myFilePath.exists())
myFilePath.mkdir();
%> 2。新建文件<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*" %>
<%
String filePath="c:/哈哈.txt";
filePath=filePath.toString();
File myFilePath=new File(filePath);
if(!myFilePath.exists())
myFilePath.createNewFile();
FileWriter resultFile=new FileWriter(myFilePath);
PrintWriter myFile=new PrintWriter(resultFile);
String strContent = "中文测试".toString();
myFile.println(strContent);
resultFile.close();
%> 3。删除文件<%@ page contentType="text/html;charset=gb2312"%>
<%
String filePath="c:/支出证明单.xls";
filePath=filePath.toString();
java.io.File myDelFile=new java.io.File(filePath);
myDelFile.delete();
%> 4。文件拷贝<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
int bytesum=0;
int byteread=0;
file://读到流中
InputStream inStream=new FileInputStream("c:/aaa.doc");
FileOutputStream fs=new FileOutputStream( "d:/aaa.doc");byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
inStream.close();
%> 5。整个文件夹拷贝<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*" %>
<%String url1="C:/aaa";
String url2="d:/java/";
(new File(url2)).mkdirs();
File[] file=(new File(url1)).listFiles();
for(int i=0;i<file.length;i++){
if(file[i].isFile()){
file[i].toString();
FileInputStream input=new FileInputStream(file[i]);
FileOutputStream output=new FileOutputStream(url2+"/"+(file[i].getName()).toString());
byte[] b=new byte[1024*5];
int len;
while((len=input.read(b))!=-1){
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
}
%> 6。文件下载<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.io.*" %>
<%
String fileName = "zsc104.swf".toString();
//读到流中
InputStream inStream=new FileInputStream("c:/zsc104.swf");
//设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
//循环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
%> 7。数据库字段中的文件下载<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
int bytesum=0;
int byteread=0;
//打开数据库
ResultSet result=null;
String Sql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//取得数据库中的数据
Sql="select * from t_local_zhongzhuan ";
result=DbaObj.ExecuteQuery(Sql);
result.next();file://将数据库中的数据读到流中
InputStream inStream=result.getBinaryStream("content");
FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
%> 8。把网页保存成文件<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%
URL stdURL = null;
BufferedReader stdIn = null;
PrintWriter stdOut = null;
try {
stdURL = new URL("http://www.163.com");
}
catch (MalformedURLException e) {
throw e;
}try {
stdIn = new BufferedReader(new InputStreamReader(stdURL.openStream()));
stdOut = new PrintWriter(new BufferedWriter(new FileWriter("c:/163.html")));
}
catch (IOException e) {
} /***把URL指定的页面以流的形式读出,写成指定的文件***/
try {
String strHtml = "";
while((strHtml = stdIn.readLine())!=null) {
stdOut.println(strHtml);
}
}
catch (IOException e) {
throw e;
}
finally {
try {
if(stdIn != null)
stdIn.close();
if(stdOut != null)
stdOut.close();
}
catch (Exception e) {
System.out.println(e);
}
}
%> 9。直接下载网上的文件<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%
int bytesum=0;
int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif");
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs=new FileOutputStream( "c:/abc.gif"); byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}*>
<%@ page import="java.io.*" %>
<%
String fileName = "zsc104.swf".toString();
//读到流中
InputStream inStream=new FileInputStream("c:/zsc104.swf");
//设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
//循环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
%>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢?
我还想知道,如何在下载文件的时候,优先去找网络蚂蚁,flashget等下载工具呢?!
<%@ page import="java.io.*" %>
<%
String fileName = "zsc104.swf".toString();
//读到流中
InputStream inStream=new FileInputStream("c:/zsc104.swf");
//设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
//循环取出流中的数据
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) >0)
response.getOutputStream().write(b,0,len);
inStream.close();
%>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢?并且不可下载,说没有这个文件,只有在第二次打开时才可以显示下载的文件名,才可以正常下载?
<%@ page import="java.net.*"%>
<%
int bytesum=0;
int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif");
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs=new FileOutputStream( "c:/abc.gif"); byte[] buffer =new byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
{
out.println("<DT><B>"+byteread+"</B></DT>");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}%>
晕!
老大不关闭文件的?
这样文件下载以后不允许进行操作啊!
加上一句吧:
fs.close();
OK???