java实现对文件的各种操作(转)

各种操作挺全的:

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("http://www.163.com/");
}
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("http://pimg.163.com/sms/micheal/logo.gif");
   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 @ 2008-09-21 12:37  harry.guo  阅读(...)  评论(... 编辑 收藏