package auh.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Structs 2 Web应用中的文件操作(复制和删除文件、目录,读取文本文件)
* @author 可可
* @param RootDir web的根路径,可以通过setRootDir设置,所有操作均相对与根路径进行的。
*/
import org.apache.struts2.ServletActionContext;
public class WebFile {
private String RootDir;
public WebFile(){
this.RootDir=ServletActionContext.getServletContext().getRealPath("/");
}
public String getRootDir() {
return RootDir;
}
public void setRootDir(String rootDir) {
RootDir = rootDir;
}
/**
* 创建多级目录
* @param ParentDir 为空时只创建subDir目录
* @param subDir ParentDir 不为空时以 / 开头,ParentDir 为空时为决定路径
* @return boolean 是否成功
*/
public boolean creatDirs(String ParentDir,String subDir)
{
if(ParentDir==""){
File f=new File(subDir);
if(!f.exists())f.mkdirs();
return true;
}
File aFile = new File(ParentDir);
if (aFile.exists())
{
File subFile = new File(ParentDir + subDir);
if (!subFile.exists())return subFile.mkdirs();
else return true;
}
else return false;
}
/**
* 删除目录包括目录中的文件
* @param dir 以 / 开头,相对于根路径的目录
* @return boolean 是否成功
*/
public boolean deleteDirs(String dir){
dir=RootDir+dir;
File file=new File(dir);
if(file.exists()){
String[] filelist=file.list();
for(int i=0;i<filelist.length;i++){
File f=new File(dir+"/"+filelist[i]);
if(f.exists())f.delete();
}
file.delete();
return true;
}
else return false;
}
/**
* 删除文件
* @param filename 以 / 开头,相对于根路径的文件
* @return boolean 是否成功
*/
public void deleteFile(String filename){
filename=RootDir+filename;
File file=new File(filename);
if(file.exists())file.delete();
}
/**
* 复制目录包括目录中的文件
* @param sdir 原始路径,以 / 开头,相对于根路径
* @param tdir 目标路径,以 / 开头,相对于根路径
* @return boolean 是否成功
*/
public boolean copyDirs(String sdir,String tdir){
String rsdir=RootDir+sdir;
String rtdir=RootDir+tdir;
creatDirs("",rtdir);
File file=new File(rsdir);
if(file.isDirectory()){
String[] filelist=file.list();
for(int i=0;i<filelist.length;i++)
copyFile(sdir+"/"+filelist[i],tdir+"/"+filelist[i]);
return true;
}
else return false;
}
/**
* 复制文件
* @param sfilename 源文件名,以 / 开头,相对于根路径
* @param tfilename 目标文件名,以 / 开头,相对于根路径
* @return boolean 是否成功
*/
public boolean copyFile(String sfilename,String tfilename){
sfilename=RootDir+sfilename;
tfilename=RootDir+tfilename;
try{
File sfile=new File(sfilename);
if(sfile.exists()){
File tfile=new File(tfilename);
FileInputStream freader=new FileInputStream(sfile);
FileOutputStream fwriter=new FileOutputStream(tfile);
byte[] buff=new byte[1024];
int len=0;
while((len=freader.read(buff))>0)
fwriter.write(buff,0,len);
freader.close();
fwriter.close();
}else return false;
}catch(IOException e){
System.out.println(e);
return false;
}
return true;
}
/**
* 读取文本文件
* @param encoding 文本文件的编码方式,例:utf-8
* @param filename 以 / 开头,相对于根路径的文件
* @return String 文件中的字符串
*/
public String readFile(String filename,String encoding){
File file=new File(RootDir+filename);
try{
FileInputStream freader=new FileInputStream(file);
int length=(int)file.length();
byte[] buffer=new byte[length];
freader.read(buffer);
String s=new String(buffer,encoding);
freader.close();
return s;
}catch(IOException e){
System.out.println(e);
return null;
}
}
}
分享到:
相关推荐
这个"自己整理的structs包"包含了多个与Structs框架相关的库文件,以及一些常用的Java开发工具包,这些库文件是Structs框架运行和开发过程中必不可少的依赖。 首先,我们看到`struts.jar`,这是Structs框架的核心库...
在这个整合项目中,开发者可能展示了如何在Struts2中集成Hibernate,利用Spring进行依赖注入,从而在业务逻辑层处理数据。同时,使用JFreeChart生成图表,展示数据的可视化结果。项目还涉及了Excel和PDF的导出功能,...
在JSP页面中,使用Struts2的标签库中的标签来读取并显示国际化资源文件中的文本。 在编写国际化资源文件时,需要注意编码方式。由于国际化资源文件中可能包含中文或其他非ASCII字符,为了防止页面出现乱码,所有的...
文件和目录操作涉及java.io包,如File类可以用来列出目录下的文件和子目录,exists()判断文件或目录是否存在,FileReader/Writer用于读写文件。 【多态、编码转换、数据库访问】 Java的多态性通过继承、方法重载和...
- **多种数据格式**:能够直接查询不同格式的数据文件(文本或二进制)和文件类型(平面文件或序列文件)。 - **SQL 查询语言**:使用 SQL 作为熟悉的编程工具和标准分析手段。 2. **主要构建原则** - **基于 ...
Struts 是一个开源的 MVC(Model-View-Controller)框架,它被广泛应用于Java Web开发中,以提供更有效的架构模式。Struts 1.2.9是该框架的一个较早版本,它在当时非常流行,尽管现在已被更新的Struts 2所取代,但仍...
- **加载**:查找并读取类文件数据到内存中。 - **验证**:确保类文件数据的正确性。 - **准备**:为静态变量分配内存并设置默认值。 - **解析**:将符号引用转换为直接引用。 - **初始化**:执行类构造器`()`方法。...