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.*" %>
<% // 得到文件名字和路径
  
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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值