first commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.idea
|
||||
.DS_Store
|
||||
14
Web-Security-Monitored.iml
Normal file
14
Web-Security-Monitored.iml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="commons-logging-1.1.1" level="project" />
|
||||
<orderEntry type="library" name="httpclient-4.5.1" level="project" />
|
||||
<orderEntry type="library" name="httpcore-4.4.4" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
BIN
lib/commons-logging-1.1.1.jar
Executable file
BIN
lib/commons-logging-1.1.1.jar
Executable file
Binary file not shown.
BIN
lib/httpclient-4.5.1.jar
Executable file
BIN
lib/httpclient-4.5.1.jar
Executable file
Binary file not shown.
BIN
lib/httpcore-4.4.4.jar
Executable file
BIN
lib/httpcore-4.4.4.jar
Executable file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: com.superl.Main
|
||||
|
||||
Binary file not shown.
BIN
out/production/Web-Security-Monitored/com/superl/Main.class
Normal file
BIN
out/production/Web-Security-Monitored/com/superl/Main.class
Normal file
Binary file not shown.
BIN
out/production/Web-Security-Monitored/com/superl/MyService.class
Normal file
BIN
out/production/Web-Security-Monitored/com/superl/MyService.class
Normal file
Binary file not shown.
Binary file not shown.
3
src/META-INF/MANIFEST.MF
Normal file
3
src/META-INF/MANIFEST.MF
Normal file
@@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: com.superl.Main
|
||||
|
||||
132
src/com/superl/ChuanglanSMS.java
Normal file
132
src/com/superl/ChuanglanSMS.java
Normal file
@@ -0,0 +1,132 @@
|
||||
package com.superl;
|
||||
|
||||
|
||||
/**
|
||||
* @Package com.superl
|
||||
* @Description 创蓝短信接口
|
||||
* @Author superl www.superl.org
|
||||
* @Date 2017/4/11 下午5:59
|
||||
* @Version V1.0
|
||||
*/
|
||||
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
public class ChuanglanSMS {
|
||||
private CloseableHttpClient client;
|
||||
private String account;
|
||||
private String password;
|
||||
private static final String SEND_URL="http://222.73.117.138:7891/mt";
|
||||
private static final String QUERY_URL="http://222.73.117.138:7891/bi";
|
||||
private static final String INTERNATIONAL_URL="http://222.73.117.140:8044/mt";
|
||||
|
||||
public ChuanglanSMS(String account,String password){
|
||||
this.account = account;
|
||||
this.password = password;
|
||||
client = HttpClients.createDefault();
|
||||
//System.out.println(account);
|
||||
}
|
||||
|
||||
public CloseableHttpResponse sendMessage(String phone, String content) {
|
||||
String encodedContent = null;
|
||||
try {
|
||||
encodedContent = URLEncoder.encode(content, "utf-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
StringBuffer strBuf = new StringBuffer(SEND_URL);
|
||||
strBuf.append("?un=").append(account);
|
||||
strBuf.append("&pw=").append(password);
|
||||
strBuf.append("&da=").append(phone);
|
||||
strBuf.append("&sm=").append(encodedContent);
|
||||
strBuf.append("&dc=15&rd=1&rf=2&tf=3");
|
||||
HttpGet get = new HttpGet( strBuf.toString() );
|
||||
|
||||
try {
|
||||
return client.execute(get);
|
||||
} catch (ClientProtocolException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public CloseableHttpResponse queryBalance() {
|
||||
StringBuffer strBuf = new StringBuffer(QUERY_URL);
|
||||
strBuf.append("?un=").append(account);
|
||||
strBuf.append("&pw=").append(password);
|
||||
strBuf.append("&rf=2");
|
||||
HttpGet get = new HttpGet( strBuf.toString() );
|
||||
|
||||
try {
|
||||
return client.execute(get);
|
||||
} catch (ClientProtocolException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public CloseableHttpResponse sendInternationalMessage(String phone, String content) {
|
||||
String encodedContent = null;
|
||||
try {
|
||||
encodedContent = URLEncoder.encode(content, "utf-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
StringBuffer strBuf = new StringBuffer(INTERNATIONAL_URL);
|
||||
strBuf.append("?un=").append(account);
|
||||
strBuf.append("&pw=").append(password);
|
||||
strBuf.append("&da=").append(phone);
|
||||
strBuf.append("&sm=").append(encodedContent);
|
||||
strBuf.append("&dc=15&rd=1&rf=2&tf=3");
|
||||
HttpGet get = new HttpGet( strBuf.toString() );
|
||||
|
||||
try {
|
||||
return client.execute(get);
|
||||
} catch (ClientProtocolException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void close() {
|
||||
if(client != null){
|
||||
try {
|
||||
client.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
public void setAccount(String account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
}
|
||||
30
src/com/superl/Main.java
Normal file
30
src/com/superl/Main.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.superl;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) throws IOException, InterruptedException{
|
||||
System.err.println("start MyWatcherService ...");
|
||||
|
||||
/*
|
||||
ChuanglanSMS client = new ChuanglanSMS("xxxxx","xxxxx");
|
||||
CloseableHttpResponse response = null;
|
||||
try {
|
||||
//发送短信
|
||||
response = client.sendMessage("181xxxxxxxx","验证码为xxxxxxxx");
|
||||
if(response != null && response.getStatusLine().getStatusCode()==200){
|
||||
System.out.println(EntityUtils.toString(response.getEntity()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
client.close();
|
||||
*/
|
||||
|
||||
MyService myWatcherService = new MyService();
|
||||
myWatcherService.initialize();
|
||||
myWatcherService.doMonitor();
|
||||
}
|
||||
}
|
||||
312
src/com/superl/MyService.java
Normal file
312
src/com/superl/MyService.java
Normal file
@@ -0,0 +1,312 @@
|
||||
package com.superl;
|
||||
|
||||
/**
|
||||
* @author superl www.superl.org
|
||||
* @version V1.0
|
||||
* @Package com.superl
|
||||
* @Description 监控功能
|
||||
* @date 2017/4/11 下午6:07
|
||||
*/
|
||||
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.apache.http.ParseException;
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Properties;
|
||||
|
||||
import static java.nio.file.StandardWatchEventKinds.*;
|
||||
|
||||
public class MyService {
|
||||
|
||||
private WatchService watchService = null;
|
||||
|
||||
private String filePrefix;
|
||||
private String monitoredPath;
|
||||
private Boolean checkPrefix;
|
||||
private Boolean monitoredDir;
|
||||
private Boolean monitoredMD;
|
||||
private String ruledoutDir;
|
||||
private String mobileNum;
|
||||
private String userName;
|
||||
private String passWord;
|
||||
|
||||
private String smsContent;
|
||||
private String eventMethod;
|
||||
|
||||
public void initialize() throws IOException{
|
||||
|
||||
Properties prop = new Properties();
|
||||
InputStream inputStream = new FileInputStream("config.properties");
|
||||
BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
|
||||
prop.load(bf);
|
||||
inputStream.close(); // 关闭流
|
||||
|
||||
/*
|
||||
InputStream in = new BufferedInputStream(new FileInputStream("config.properties"));
|
||||
Properties prop = new Properties();
|
||||
prop.load(in);
|
||||
*/
|
||||
|
||||
filePrefix = prop.getProperty("file_prefix");
|
||||
monitoredPath = prop.getProperty("monitored_path");
|
||||
checkPrefix = new Boolean(prop.getProperty("check_prefix"));
|
||||
monitoredDir = new Boolean(prop.getProperty("monitored_directory"));
|
||||
monitoredMD = new Boolean(prop.getProperty("monitored_move_delete"));
|
||||
ruledoutDir = prop.getProperty("ruledout_dir");
|
||||
mobileNum = prop.getProperty("mobile");
|
||||
userName = prop.getProperty("username");
|
||||
passWord = prop.getProperty("password");
|
||||
//System.out.println(ruledoutDir); 测试是否中文乱码
|
||||
|
||||
watchService = FileSystems.getDefault().newWatchService();
|
||||
Paths.get(monitoredPath).register(watchService, ENTRY_CREATE,ENTRY_DELETE,ENTRY_MODIFY);
|
||||
|
||||
File file = new File(monitoredPath);
|
||||
LinkedList<File> fList = new LinkedList<File>();
|
||||
fList.addLast(file);
|
||||
while (fList.size() > 0 ) {
|
||||
File f = fList.removeFirst();
|
||||
if(f.listFiles() == null)
|
||||
continue;
|
||||
for(File file2 : f.listFiles()){
|
||||
if (file2.isDirectory()){//下一级目录
|
||||
fList.addLast(file2);
|
||||
//依次注册子目录
|
||||
Paths.get(file2.getAbsolutePath()).register(watchService
|
||||
, StandardWatchEventKinds.ENTRY_CREATE
|
||||
, StandardWatchEventKinds.ENTRY_MODIFY
|
||||
, StandardWatchEventKinds.ENTRY_DELETE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void doMonitor() throws InterruptedException,IOException{
|
||||
final Properties PROPERTIES = new Properties(System.getProperties());
|
||||
String separator = PROPERTIES.getProperty("file.separator");
|
||||
|
||||
while(true){
|
||||
try {
|
||||
WatchKey key = watchService.take();
|
||||
for(WatchEvent<?> event : key.pollEvents()){
|
||||
WatchEvent.Kind kind = event.kind();
|
||||
|
||||
if(kind == OVERFLOW){
|
||||
//事件可能lost or discarded
|
||||
continue;
|
||||
}
|
||||
|
||||
WatchEvent<Path> e = (WatchEvent<Path>)event;
|
||||
//获取路径
|
||||
Path path = (Path) key.watchable();
|
||||
//获取分隔符号
|
||||
String fullpath = path.toString()+separator;
|
||||
//获取文件名
|
||||
Path fileName = e.context();
|
||||
//拼接文件名称和路径
|
||||
String filepath = fullpath+fileName;
|
||||
//获取文件后缀
|
||||
String prefix = fileName.toString().substring(fileName.toString().lastIndexOf(".")+1);
|
||||
|
||||
File theFile = new File(filepath);
|
||||
|
||||
|
||||
|
||||
//判断是文件还是目录
|
||||
if(theFile.isFile()){
|
||||
//判断是否是白名单目录
|
||||
String[] ruledoutDirArray = ruledoutDir.split(",");
|
||||
Boolean haveStr = false;
|
||||
if(ruledoutDirArray!=null||ruledoutDirArray.length!=0){
|
||||
haveStr = Arrays.asList(ruledoutDirArray).contains(path.toString());
|
||||
}else{
|
||||
haveStr = false;
|
||||
}
|
||||
if(!haveStr){
|
||||
if(checkPrefix){
|
||||
if(prefix.equals(filePrefix)){
|
||||
if(kind.toString().equals("ENTRY_CREATE")){
|
||||
eventMethod = "被新建";
|
||||
}else if (kind.toString().equals("ENTRY_MODIFY")){
|
||||
eventMethod = "被修改";
|
||||
}else{
|
||||
eventMethod = "被操作";
|
||||
}
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
smsContent = "文件:"+filepath+eventMethod+",时间:"+df.format(new Date());
|
||||
|
||||
//输出提示信息
|
||||
System.out.println(smsContent);
|
||||
|
||||
//发送提示信息到手机短信
|
||||
ChuanglanSMS client = new ChuanglanSMS(userName,passWord);
|
||||
CloseableHttpResponse response = null;
|
||||
try {
|
||||
response = client.sendMessage(mobileNum,smsContent);
|
||||
if(response != null && response.getStatusLine().getStatusCode()==200){
|
||||
System.out.println(EntityUtils.toString(response.getEntity()));
|
||||
System.out.println("短信发送成功,内容为:"+smsContent);
|
||||
}
|
||||
}catch (ParseException p1) {
|
||||
System.out.println("短信发送成失败");
|
||||
p1.printStackTrace();
|
||||
}catch (IOException i1) {
|
||||
System.out.println("短信发送成失败");
|
||||
i1.printStackTrace();
|
||||
}
|
||||
client.close();
|
||||
|
||||
}
|
||||
}else{
|
||||
if(kind.toString().equals("ENTRY_CREATE")){
|
||||
eventMethod = "被新建";
|
||||
}else if (kind.toString().equals("ENTRY_MODIFY")){
|
||||
eventMethod = "被修改";
|
||||
}else{
|
||||
eventMethod = "被操作";
|
||||
}
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
smsContent = "文件:"+filepath+eventMethod+",时间:"+df.format(new Date());
|
||||
|
||||
//输出提示信息
|
||||
System.out.println(smsContent);
|
||||
|
||||
//发送提示信息到手机短信
|
||||
ChuanglanSMS client = new ChuanglanSMS(userName,passWord);
|
||||
CloseableHttpResponse response = null;
|
||||
try {
|
||||
response = client.sendMessage(mobileNum,smsContent);
|
||||
if(response != null && response.getStatusLine().getStatusCode()==200){
|
||||
System.out.println(EntityUtils.toString(response.getEntity()));
|
||||
System.out.println("短信发送成功,内容为:"+smsContent);
|
||||
}
|
||||
}catch (ParseException p1) {
|
||||
System.out.println("短信发送成失败");
|
||||
p1.printStackTrace();
|
||||
}catch (IOException i1) {
|
||||
System.out.println("短信发送成失败");
|
||||
i1.printStackTrace();
|
||||
}
|
||||
client.close();
|
||||
|
||||
}
|
||||
}else{
|
||||
//不监控白名单目录
|
||||
}
|
||||
}else if(theFile.isDirectory()){
|
||||
//System.out.println("这是目录类型");
|
||||
|
||||
//判断是否是白名单目录
|
||||
String[] ruledoutDirArray = ruledoutDir.split("||");
|
||||
Boolean haveStr;
|
||||
if(ruledoutDirArray!=null||ruledoutDirArray.length!=0){
|
||||
haveStr = Arrays.asList(ruledoutDirArray).contains(fullpath);
|
||||
}else{
|
||||
haveStr = false;
|
||||
}
|
||||
if(!haveStr){
|
||||
if(monitoredDir){
|
||||
if(kind.toString().equals("ENTRY_CREATE")){
|
||||
eventMethod = "被新建";
|
||||
}else if (kind.toString().equals("ENTRY_MODIFY")){
|
||||
eventMethod = "被修改";
|
||||
}else{
|
||||
eventMethod = "被操作";
|
||||
}
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
smsContent = "文件:"+filepath+eventMethod+",时间:"+df.format(new Date());
|
||||
|
||||
//输出提示信息
|
||||
System.out.println(smsContent);
|
||||
|
||||
//发送提示信息到手机短信
|
||||
ChuanglanSMS client = new ChuanglanSMS(userName,passWord);
|
||||
CloseableHttpResponse response = null;
|
||||
try {
|
||||
response = client.sendMessage(mobileNum,smsContent);
|
||||
if(response != null && response.getStatusLine().getStatusCode()==200){
|
||||
System.out.println(EntityUtils.toString(response.getEntity()));
|
||||
System.out.println("短信发送成功,内容为:"+smsContent);
|
||||
}
|
||||
}catch (ParseException p1) {
|
||||
System.out.println("短信发送成失败");
|
||||
p1.printStackTrace();
|
||||
}catch (IOException i1) {
|
||||
System.out.println("短信发送成失败");
|
||||
i1.printStackTrace();
|
||||
}
|
||||
client.close();
|
||||
}else{
|
||||
//不监控目录类型
|
||||
}
|
||||
}
|
||||
}else{
|
||||
//文件被删除,被移动
|
||||
|
||||
//判断是否是白名单目录
|
||||
String[] ruledoutDirArray = ruledoutDir.split("||");
|
||||
Boolean haveStr;
|
||||
if(ruledoutDirArray!=null||ruledoutDirArray.length!=0){
|
||||
haveStr = Arrays.asList(ruledoutDirArray).contains(fullpath);
|
||||
}else{
|
||||
haveStr = false;
|
||||
}
|
||||
|
||||
if(!haveStr){
|
||||
if(monitoredMD){
|
||||
if(checkPrefix){
|
||||
if(prefix.equals(filePrefix)){
|
||||
if(kind.toString().equals("ENTRY_CREATE")){
|
||||
eventMethod = "新建操作";
|
||||
}else if (kind.toString().equals("ENTRY_MODIFY")){
|
||||
eventMethod = "修改操作";
|
||||
}else{
|
||||
eventMethod = "其他操作";
|
||||
}
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
smsContent = "文件:"+filepath+" 发生了"+eventMethod+" 操作时间:"+df.format(new Date());
|
||||
|
||||
System.out.println(smsContent);
|
||||
|
||||
ReadWriteFile myfile = new ReadWriteFile();
|
||||
myfile.creatTxtFile();
|
||||
myfile.writeTxtFile(smsContent);
|
||||
}
|
||||
}else{
|
||||
//System.out.printf("Event %s has happened,which fileName is %s%n",kind,filepath);
|
||||
if(kind.toString().equals("ENTRY_CREATE")){
|
||||
eventMethod = "新建操作";
|
||||
}else if (kind.toString().equals("ENTRY_MODIFY")){
|
||||
eventMethod = "修改操作";
|
||||
}else{
|
||||
eventMethod = "其他操作";
|
||||
}
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
smsContent = "文件:"+filepath+" 发生了"+eventMethod+" 操作时间:"+df.format(new Date());
|
||||
|
||||
System.out.println(smsContent);
|
||||
|
||||
ReadWriteFile myfile = new ReadWriteFile();
|
||||
myfile.creatTxtFile();
|
||||
myfile.writeTxtFile(smsContent);
|
||||
}
|
||||
}else{
|
||||
//配置文件设置了不监控文件被删除和移动操作
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!key.reset()){
|
||||
break;
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
System.out.println("InterruptedException: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
src/com/superl/ReadWriteFile.java
Normal file
127
src/com/superl/ReadWriteFile.java
Normal file
@@ -0,0 +1,127 @@
|
||||
package com.superl;
|
||||
|
||||
/**
|
||||
* @author superl www.superl.org
|
||||
* @version V1.0
|
||||
* @Package com.superl
|
||||
* @Description 读写文件操作类
|
||||
* @date 2017/4/11 下午6:09
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
|
||||
public class ReadWriteFile {
|
||||
|
||||
public static BufferedReader bufread;
|
||||
//指定文件路径和名称
|
||||
private static String path = "log.txt";
|
||||
private static File filename = new File(path);
|
||||
private static String readStr ="";
|
||||
|
||||
|
||||
/**
|
||||
* 创建文本文件.
|
||||
* @throws IOException
|
||||
*
|
||||
*/
|
||||
public static void creatTxtFile() throws IOException{
|
||||
if (!filename.exists()) {
|
||||
filename.createNewFile();
|
||||
//System.err.println(filename + "已创建!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取文本文件.
|
||||
*
|
||||
*/
|
||||
public static String readTxtFile(){
|
||||
String read;
|
||||
FileReader fileread;
|
||||
try {
|
||||
fileread = new FileReader(filename);
|
||||
bufread = new BufferedReader(fileread);
|
||||
try {
|
||||
while ((read = bufread.readLine()) != null) {
|
||||
readStr = readStr + read+ "\r\n";
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//System.out.println("文件内容是:"+ "\r\n" + readStr);
|
||||
return readStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 写文件
|
||||
*/
|
||||
public static void writeTxtFile(String newStr) throws IOException{
|
||||
//先读取原有文件内容,然后进行写入操作
|
||||
String filein = newStr + "\r\n" + readStr + "\r\n";
|
||||
RandomAccessFile mm = null;
|
||||
try {
|
||||
mm = new RandomAccessFile(filename, "rw");
|
||||
mm.writeBytes(filein);
|
||||
} catch (IOException e1) {
|
||||
// TODO 自动生成 catch 块
|
||||
e1.printStackTrace();
|
||||
} finally {
|
||||
if (mm != null) {
|
||||
try {
|
||||
mm.close();
|
||||
} catch (IOException e2) {
|
||||
// TODO 自动生成 catch 块
|
||||
e2.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将文件中指定内容的第一行替换为其它内容.
|
||||
*
|
||||
* @param oldStr 查找内容
|
||||
* @param replaceStr 替换内容
|
||||
*/
|
||||
public static void replaceTxtByStr(String oldStr,String replaceStr) {
|
||||
String temp = "";
|
||||
try {
|
||||
File file = new File(path);
|
||||
FileInputStream fis = new FileInputStream(file);
|
||||
InputStreamReader isr = new InputStreamReader(fis);
|
||||
BufferedReader br = new BufferedReader(isr);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
|
||||
// 保存该行前面的内容
|
||||
for (int j = 1; (temp = br.readLine()) != null
|
||||
&& !temp.equals(oldStr); j++) {
|
||||
buf = buf.append(temp);
|
||||
buf = buf.append(System.getProperty("line.separator"));
|
||||
}
|
||||
|
||||
// 将内容插入
|
||||
buf = buf.append(replaceStr);
|
||||
|
||||
// 保存该行后面的内容
|
||||
while ((temp = br.readLine()) != null) {
|
||||
buf = buf.append(System.getProperty("line.separator"));
|
||||
buf = buf.append(temp);
|
||||
}
|
||||
|
||||
br.close();
|
||||
FileOutputStream fos = new FileOutputStream(file);
|
||||
PrintWriter pw = new PrintWriter(fos);
|
||||
pw.write(buf.toString().toCharArray());
|
||||
pw.flush();
|
||||
pw.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user