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 =newbyte;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.isFile()){ file.toString(); FileInputStream input=new FileInputStream(file); FileOutputStream output=new FileOutputStream(url2+"/"+(file.getName()).toString()); byte[] b=new byte; 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;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.JDBCUtilSqlBean= 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 =newbyte; 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)文件头上加:<%@ pagecontentType="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=truealert ("您的"+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(); %>
页:
[1]