servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本
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中的文本的更多相关文章
- Android 关于文件及文件夹的创建 、删除、重命名、复制拷贝
package com.example.administrator.myapplication.util; import java.io.BufferedReader;import java.io.B ...
- delphi 文件的操作:重命名、复制、移动、删除
Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar(' ...
- Java显示指定类型的文件
文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...
- linux 下文件重命名/移动/复制命令(转)
linux 下文件重命名/移动/复制命令(转) linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc 重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行 ...
- 用Linux命令行实现删除和复制指定类型的文件
(一)Linux 删除当前目录及子目录中所有某种类型的文件 方法1 : 此方法不能处理目录中带空格的那些. rm -rf `find . -name "*.example"` Li ...
- C# 获取指定类型的文件
C# 获取指定类型的文件 public static List<FileInfo> getFile(string path, string extName) { List<FileI ...
- DevExpress的TreeList实现显示本地文件目录并自定义右键实现删除与重命名文件
场景 使用DevExpress的TreeList显示本磁盘下文件目录并在树节点上右键实现删除与添加文件. 效果 自定义右键效果 实现 首先在包含Treelist的窗体的load方法中对treelist ...
- 文件6. 查找替换.txt文本文件中的内容
servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...
- Java zip 压缩 文件夹删除,移动,重命名,复制
FileUtil.java import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.ut ...
随机推荐
- 应对 Visual Stdio 编译时出现错误:常量中有换行符
笔者最近用 Visual Stdio 时,发现一个问题,在某一次写完语言进行编绎运行时,出现了以下错误: C2001错误:变量中有换行符 C2413错误:语法错误 缺少")"(在& ...
- Android 简单记事本
写在前面 课程作业需要,于是忙活好几天抄了一个简单的记事本,使用已学内容包括Android UI布局,Activity的跳转,SQLite数据库. 开发环境:Android Studio 参考:htt ...
- js for 循环示例
//for 循环 ,,,,,,]; ; i < array.length; i++) { console.log(i,array[i]); } //for in ,,,,,,]; for(let ...
- jfinal afterJFinalStart中执行长久循环操作的解决方案:创建新线程
很多时候,需要在jfinal中afterJFinalStart方法中,写一些需要一直循环运行的程序,做一些循环操作.但是在afterJFinalStart中,执行时间过长的话,会导致整个站点启动超时. ...
- MATLAB 符号变量表达式 + 方程求解
源代码见文末 部分源代码: % 符号变量 两种表达方式 a=sym('a'); class(a); syms b; b; % 符号常量 c=sym('); c; % 符号表达式 三种表达方式 f1=' ...
- 使用js写简易的倒计时
步骤 1.获取span标签2.获取现在的时间戳 3.获取未来的时间戳 4.将未来时间戳减去现在的时间戳等于相差的秒数 5.输出到页面 直接上代码 <span name="os" ...
- python中一个汉字点3个字节? utf-8
今天发现了一个汉字占了3个字节,一开始以为是两个呢,字符串切片时总出现乱码,后来才发现一个中文占3个字节.这才解决了乱码问题 原来 1. utf-8 编码中,一个汉字占三个字节.英文字母是一个占用一 ...
- MongoDB数据查询 --MongoDB
1.插入测试数据 use flower db.goods.insert({'goods_name':'Hyacinth',price:10,num:800}) db.goods.insert({goo ...
- 日常记Bug
前记:后端写代码应该对数据的交互更加掌握,不要被编码.数据模型细节坑住 Unicode编码.Django数据迁移偶尔产生的不稳定 处理细项工资记录模型: class TeachRoll(models. ...
- Petrozavodsk Winter Camp, Day 8, 2014, Fine Brochures
1的个数-块的个数+多减的个数+flag 多减的只会在一个循环末尾出现 #include <bits/stdc++.h> using namespace std; #define rep( ...