Java对各种文件的操作详解
这里不讨论有关apache的commons-io中的FileUtils,只是一些基本的对文件的操作的代码,有时间会整理一个FileUtils的用法的文章。
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();
%>
<%
// 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 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+"该文件不存在");
}
%>
<%
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 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 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 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 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 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 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();
%>
<% @ 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文档了
<!-- 以上这行设定本网页为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 >
< 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 >
< 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();
%>
<% // 得到文件名字和路径
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();
%>