package servlet;

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServlet; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class FileActions extends HttpServlet {
private static final long serialVersionUID = 1L;
/*
* 判断文件是否存在
*/
public boolean fileIsExists(File file) {
boolean bool=file.exists();
return bool;
}
/*
* 文件重命名
*/
public boolean fileReName(String filePath, String newName) {
File file=new File(filePath);
boolean isExist=fileIsExists(file);
boolean reName=false;
if(isExist) {
File newFile=new File(file.getParent()+File.separator+newName);
reName=file.renameTo(newFile);
} else {
System.out.println("该文件不存在!");
}
return reName;
}
/*
* 文件复制
*/
public void copyFile(String filePath1,String filePath2) {
File fromFile=new File(filePath1);
File toFiles=new File(filePath2);
boolean isExist1=fileIsExists(fromFile);
if(isExist1) {
try {
boolean isExist2=fileIsExists(toFiles);
if(!isExist2)
toFiles.mkdir();
FileInputStream fis=new FileInputStream(fromFile);
File newFile=new File(toFiles.getPath()+File.separator+fromFile.getName());
FileOutputStream fos=new FileOutputStream(newFile);
int count;
byte[] buffer=new byte[1024];
while((count=fis.read(buffer))!=-1) {
for(int i=0;i<count;i++)
fos.write(buffer[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("该文件不存在!");
}
}
/*
* 获取文件信息,转成Json对象
*/
public JSONObject getFileInfo(String filePath) {
JSONObject message=new JSONObject();
File file=new File(filePath);
boolean isExist=fileIsExists(file);
if(isExist) {
if(!file.isFile()) {
message.put("message", "该路径不是文件!");
} else {
message.put("message", "文件存在!");
Map<String, String> fileInfo=new HashMap<String, String>();
try {
fileInfo.put("文件名称", file.getName());
fileInfo.put("文件路径", file.getCanonicalPath());
fileInfo.put("上级目录",file.getParentFile().getParent());
fileInfo.put("隐藏",file.isHidden()?"隐藏":"显示");
fileInfo.put("只读属性", file.canWrite()?"可写":"不可写");
fileInfo.put("最后修改日期", new Date(file.lastModified()).toLocaleString());
fileInfo.put("文件长度", String.format("%#,.2fk", file.length()/1024.0));
JSONObject jsonFileInfo=JSONObject.fromObject(fileInfo);
message.put("属性", jsonFileInfo);
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
message.put("message", "该文件不存在!");
}
return message;
}
/*
* 获取指定类型的文件
* 参数1:文件夹路径
* 参数2:指定的文件类型
*/
public JSONArray getFileOneType(String filesPath, String type) {
File[] files=null;
CustomFilter fileFilter=new CustomFilter();
fileFilter.setExtentName(type);
File file=new File(filesPath);
if(file.isDirectory()) {
files=file.listFiles(fileFilter);
}
if(files!=null) {
List<Object[]> fileList=new ArrayList<Object[]>();
for(File f:files) {
Object[] subFile={f.getName(), f.length(), new Date(f.lastModified()).toLocaleString()};
fileList.add(subFile);
}
JSONArray jsonFile=JSONArray.fromObject(fileList);
return jsonFile;
} else {
return null;
}
}
/*
* 查找替换.txt中的文本
* 参数1: 文件路径
* 参数2: 要查找的字符串
* 参数3: 替换字符串
*/
public boolean replaceFileStr(String path, String str, String con) {
try {
FileReader fr=new FileReader(path);
BufferedReader br=new BufferedReader(fr);
char[] data=new char[1024];
int rn=0;
StringBuilder sb=new StringBuilder();
while((rn=fr.read(data))>0) {
String content=String.valueOf(data,0,rn);
sb.append(content);
}
fr.close();
String contentStr=sb.toString().replace(str,con);
FileWriter font=new FileWriter(path);
font.write(contentStr.toCharArray());
font.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
} }

以上为servlet层代码,下面为获取指定类型的文件需要用到的CustomFilter类

 package servlet;

 import java.io.File;
import java.io.FileFilter; public class CustomFilter implements FileFilter {
private String extentName; public String getExtentName() {
return extentName;
} public void setExtentName(String extentName) {
this.extentName = extentName;
} @Override
public boolean accept(File pathname) {
if(extentName==null || extentName.isEmpty())
return false;
if(!extentName.startsWith("."))
extentName="."+extentName;
extentName=extentName.toLowerCase();
if(pathname.getName().toLowerCase().endsWith(extentName))
return true;
return false;
} }

servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本的更多相关文章

  1. Android 关于文件及文件夹的创建 、删除、重命名、复制拷贝

    package com.example.administrator.myapplication.util; import java.io.BufferedReader;import java.io.B ...

  2. delphi 文件的操作:重命名、复制、移动、删除

    Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar(' ...

  3. Java显示指定类型的文件

    文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...

  4. linux 下文件重命名/移动/复制命令(转)

    linux 下文件重命名/移动/复制命令(转) linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc   重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行 ...

  5. 用Linux命令行实现删除和复制指定类型的文件

    (一)Linux 删除当前目录及子目录中所有某种类型的文件 方法1 : 此方法不能处理目录中带空格的那些. rm -rf `find . -name "*.example"` Li ...

  6. C# 获取指定类型的文件

    C# 获取指定类型的文件 public static List<FileInfo> getFile(string path, string extName) { List<FileI ...

  7. DevExpress的TreeList实现显示本地文件目录并自定义右键实现删除与重命名文件

    场景 使用DevExpress的TreeList显示本磁盘下文件目录并在树节点上右键实现删除与添加文件. 效果 自定义右键效果 实现 首先在包含Treelist的窗体的load方法中对treelist ...

  8. 文件6. 查找替换.txt文本文件中的内容

    servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...

  9. Java zip 压缩 文件夹删除,移动,重命名,复制

    FileUtil.java import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.ut ...

随机推荐

  1. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  2. Hadoop之搭建完全分布式运行模式

    一.过程分析 1.准备3台客户机(关闭防火墙.修改静态ip.主机名称) 2.安装JDK 3.配置环境变量 4.安装Hadoop 5.配置集群 6.单点启动 7.配置ssh免密登录 8.群起并测试集群 ...

  3. 【调试】Idea如何远程debug之tomcat war包启动

    一.修改tomcat配置并启动 1.修改tomcat bin目录下的startup.sh配置,定位startup.sh最后一行,使用jpda  start启动 即将exec "$PRGDIR ...

  4. mybatis 动态sql和参数

    mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...

  5. RePr: Improved Training of Convolutional Filters

    关键点: 1.关于filter正交 将一层中的一个$k \times k \times c$的卷积核展开为$k * k * c$的向量,表示为$f$.一层中有$J_{\ell}$个卷积核,$\bold ...

  6. 『计算机视觉』物体检测之RefineDet系列

    Two Stage 的精度优势 二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,导致分类器训练比较困难,这也是一步法效果不如二步法的原因之一,也是focal loss的motivation ...

  7. 【期望dp】绵羊跳弹簧

    [期望dp] 绵羊跳弹簧 >>>>题目 [题目] T 组数据.对于每一组数据,有n+1 个格子从0 到n 标号,绵羊从0 号结点开始,每次若在 x 位置掷骰子,令掷出的数为nu ...

  8. vue-quill-editor富文本编辑器,上传图片自定义为借口上传

    vue-quill-editor富文本编辑器,上传图片自定义为借口上传 博客地址:https://blog.csdn.net/lyj2018gyq/article/details/82585194

  9. Oracle启用和禁用触发器

    1.禁用 table_name 表的所有 trigger alter table table_name disable all triggers; 2.启用 table_name 表的所有 trigg ...

  10. swig模板引擎汇总

    1. Express中使用swig模板引擎 2.Swig 使用指南 3.jade to html online