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("<a );
- ?}
- ?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("<a );
- ? 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+"
- ";
- }
- 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,以下代碼來自引用:
]]>
?
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()
- ?%>