java中提供了io類庫,可以輕松的用java實現對文件的各種操作。下面就來說一下如何用java來實現這些操作。
?
新建目錄<%@ page contentType='text/html;charset=gb2312'%>
<%
//String URL = request.getRequestURI();
String filePath='C:\\測試\\';
filePath=filePath.toString();//中文轉換
java.io.File myFilePath=new java.io.File(filePath);
if(!myFilePath.exists())
myFilePath.mkdir();
%>
?
新建文件
<%@ page contentType='text/html;charset=gb2312'%>
<%@ page import='java.io.*' %>
<%
String filePath='c:/測試/newFile.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 content ='這是測試數據';
String strContent = content.toString();
myFile.println(strContent);
resultFile.close();
%>
?
刪除文件<%@ page contentType='text/html;charset=gb2312'%>
<%
String filePath='c://測試//newFile.txt';
filePath=filePath.toString();
java.io.File myDelFile=new java.io.File(filePath);
if(myDelFile.exists())
{??
??? myDelFile.delete();
??? out.println(filePath+'刪除成功?。?!');
}
else
{
??? out.println(filePath+'該文件不存在');
}
%>
文件拷貝<%@ page contentType='text/html; charset=gb2312' %>
<%@ page import='java.io.*' %>
<%
int bytesum=0;
int byteread=0;
//file:讀到流中
InputStream inStream=new FileInputStream('c://測試//newFile.txt');
FileOutputStream fs=new FileOutputStream( 'c://測試//copyFile.txt');
byte[]? buffer =new? byte[1444];
int length;
while ((byteread=inStream.read(buffer))!=-1)
?{
?? out.println('<DT><B>'+byteread+'</B></DT>');
?? bytesum+=byteread;
?? out.println(bytesum);
?? fs.write(buffer,0,byteread);
?}
inStream.close();
%>
?
整個文件夾拷貝
<%@ 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();
? }
?}
%>
?
文件下載
<%@ page contentType='text/html; charset=gb2312'%>
<%@ page import='java.io.*' %>
<%
? String fileName = 'newFile.txt'.toString();
? //讀到流中
? InputStream inStream=new FileInputStream('c://測試//newFile.txt');
? //設置輸出的格式
? response.reset();
? response.setContentType('text/plain');
? response.addHeader('Content-Disposition','attachment; filename=\'' + fileName + '\'');
? //循環取出流中的數據
? byte[] b = new byte[100];
? int len;
? ServletOutputStream outStream = response.getOutputStream();
?
? while((len=inStream.read(b)) >0)
? outStream.write(b,0,len);
? outStream.flush();
? outStream.close();
? inStream.close();
%>
?
數據庫字段中的文件下載
<%@ page contentType='text/html;charset=gb2312'%>
<%@ page import='java.util.*,java.sql.*,java.io.*'%>
<%
??? String id = request.getParameter('id');
??? if(id==null)
??? {?? throw new Exception ('沒有找到圖片');
??? }
??? else
??? {
?????? try
?????? {
com.gzrealmap.lib.jdbc.JDBCUtil? SqlBean= com.gzrealmap.lib.jdbc.JDBCUtil.getInstance();
?????????????? SqlBean.connect();
?????????????? String sql = 'select * from innernews where id = ''+79+''';
?????????????? ResultSet rs = SqlBean.queryforUpdate(sql);
?????????????? rs.next();
?????????????? //String fileNamedb = rs.getString('imageName');
?????????????? String file= rs.getString('acc');
?????????????? //String fileName = new String(fileNamedb.getBytes(),'iso-8859-1');
?????????????? String fileName = 'a.jpg';
??????????????? response.setHeader('Content-Disposition',? 'inline; filename=\'' + fileName + '\'');????
?????????????? String filter = fileName.substring(fileName.lastIndexOf('.'));
??????????????
?????????????? if(filter.equals('.txt'))
?????????????? {
?????????????????? response.setContentType('text/plain');
?????????????? }
?????????????? else if(filter.equals('.doc')||filter.equals('.dot'))
?????????????? {
?????????????????? response.setContentType('application/msword');
?????????????? }
?????????????? else
?????????????? {
???????????????? response.setContentType('image/jpeg;charset=GB2312');
?????????????? }
?????????????? ServletOutputStream o = response.getOutputStream();
?????????????? //o.write(file);
?????????????? out.println(file);
?????????????? //o.flush();
?????????????? //o.close();
?????????????? SqlBean.disconnect();
?????? }
??????? catch(Exception ex)
?????? {
?????????? out.println(ex.getMessage());
?????? }
??? }??
%>
?
把網頁保存成文件<%@ page contentType='text/html;charset=gb2312'%>
<%@ page import='java.text.*,java.util.*,java.net.*,java.io.*'%>
<%
?URL stdURL = null;
?BufferedReader stdIn = null;
?PrintWriter stdOut = null;
?try {
? stdURL = new URL('
?}
?catch (MalformedURLException e) {
?? throw e;
?}
?
try {
??? //將字節流轉變成為字符流
??? stdIn = new BufferedReader(new InputStreamReader(stdURL.openStream()));
??? String theFileName = 'c://測試//163.html';
??? stdOut = new PrintWriter(new BufferedWriter(new FileWriter(theFileName.toString())));
?}
?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);
?? }
?}
%>
?
直接下載網上的文件
<%@ page contentType='text/html;charset=gb2312'%>
<%@ page import='java.io.*'%>
<%@ page import='java.net.*'%>
<%
? int bytesum=0;
? int byteread=0;
? URL url = new URL('
? URLConnection conn = url.openConnection();
? InputStream inStream = conn.getInputStream();
?
? /**
? String theFileName = 'c:/測試/logo.gif';
? theFileName = theFileName.toString();
? File myFilePath=new File(theFileName);
? if(!myFilePath.exists())
? myFilePath.createNewFile();
? **/
?
? FileOutputStream fs=new FileOutputStream('c:/測試/logo2.gif');
? byte[]? buffer =new? byte[1444];
??? 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 contentType='text/html; charset=gb2312' %>
<%@ page import='java.io.*' %>
<%
FileReader myFileReader=new FileReader('c:/哈哈.txt');
BufferedReader myBufferedReader=new BufferedReader(myFileReader);
String myString=null;
String resultString=new String();
while((myString=myBufferedReader.readLine())!=null) {
resultString=resultString+myString+'<br>';
}
out.println(resultString);
myFileReader.close();
%>
?
對word文檔的處理(上傳與下載)<%@ page contentType='application/msword' %>
<!-- 以上這行設定本網頁為excel格式的網頁 -->
<%
?? response.setHeader('Content-disposition','inline; filename=test1.doc'); //線上瀏覽方式
? // response.setHeader('Content-disposition','attachment; filename=test1.doc');//下載方式
?? //以上這行設定傳送到前端瀏覽器時的檔名為test1.doc
?? //就是靠這一行,讓前端瀏覽器以為接收到一個word檔
%>
//然后輸出動態內容就可以得到一個word文檔了
?
1,打開:
1)文件頭上加:<%@ page? contentType='application/msword'%>?
xml文件里:
<mime-mapping>
??????? <extension>doc</extension>
??????? <mime-type>application/msword</mime-type>
</mime-mapping>
2)可以用js,以下代碼來自引用:
<%@ page contentType='text/html;charset=gb2312' import= 'java.io.*'%>
<HTML>
<script>
var wrd=new ActiveXObject('Word.Application')
wrd.visible=true
alert('您的'+wrd.Application.Caption+'安裝路徑為:\n'+wrd.Application.Path+'\n版本號是:'+wrd.Application.version+'\n注冊使用者是:'+wrd.Application.UserName)
wrd.Documents.Add()
//wrd.Documents.Open('c:\\exam.doc')
wrd.Selection.TypeText('This is some text.')
wrd.Application.Activate()
wrd.ActiveDocument.SaveAs('c:\\exam111.doc')
wrd=null
</script>
</HTML>
?
2,下載:
<%@ page contentType='text/html;charset=gb2312' import= 'java.io.*'%>
<%// 得到文件名字和路徑
? String filename = 'jsp.doc';
? String filepath = 'C:\\';
?
? // 設置響應頭和下載保存的文件名
? response.setContentType('APPLICATION/OCTET-STREAM');
? response.setHeader('Content-Disposition','attachment; filename=\'' + filename + '\'');
?
? // 打開指定文件的流信息
? java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + filename);
? //FileOutputStream out? = new FileOutputStream(filepath+'測試\\' + filename);
? // 寫出流信息
? int i;
? while ((i=fileInputStream.read()) != -1) {
?? out.write(i);
? }
? fileInputStream.close();
? out.close();
?%>
posted on 2007-03-31 23:25
weikj 閱讀(95)
評論(0) 編輯 收藏