Java对各种文件的操作详解

    技术2022-05-11  13

    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();  %>  

    最新回复(0)