java 写入指定路径文件_java对指定目录下文件读写操作介绍 | 学步园

最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动。为了省点工作量,想着能不能写个程序批处理了,减少点工作量,于是就有了下面的代码。

1.读取指定的(.java)文件:

复制代码 代码如下:

public static String readFile(String path) throws IOException {

File f = new File(path);

StringBuffer res = new StringBuffer();

String filePathStr = f.getPath();

System.out.println("获取文件的路径:::::::"+filePathStr);

FileInputStream fis = new FileInputStream(f);

InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk编码打开文本文件

BufferedReader br = new BufferedReader(isr, 8192 * 8);

String line = null;

int linenum = 0;

while((line=br.readLine())!=null) {

linenum ++;

res.append(line+"此处可以添加你自己的字符串处理逻辑"+"\r\n");

}

br.close();

return res.toString();

}

2.读取的文件内容信息写到指定的(.java)文件

复制代码 代码如下:

public static boolean writeFile(String cont, String path) {

try {

File dist = new File(path);

OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(dist),"GBK");

writer.write(cont);

writer.flush();

writer.close();

return true;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

3.查找指定目录下所有符合条件的.java文件,并更新文件信息

复制代码 代码如下:

/**

* 查找文件

* @param f

* @throws IOException

*/

public static void findFile(File f) throws IOException {

if(f.exists()) {

if(f.isDirectory()) {

for(File fs:f.listFiles(ff)) {

findFile(fs);

}

} else {

updateFile(f);

}

}

}

/**

* 逐行读java文件

* @param f

* @throws IOException

*/

private static void updateFile(File f) throws IOException {

String filePathStr = f.getPath();

System.out.println("开始读取文件的路径:::::::"+filePathStr);

FileInputStream fis = new FileInputStream(f);

InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk编码打开文本文件

BufferedReader br = new BufferedReader(isr, 8192 * 8);

String line = null;

int linenum = 0;

StringBuffer res = new StringBuffer();

while((line=br.readLine())!=null) {

String updateStr= updateStr(line);

res.append(updateStr+"\r\n");

if(!line.trim().equals(updateStr.trim())) {

linenum ++;

}

}

br.close();

//如果文件有修改,则修改后的文件,覆盖原有文件

if(linenum>0) {

System.out.println("=============================");

System.out.println("filePathStr:"+filePathStr);

System.out.println("文件修改了:"+linenum+"处。");

System.out.println("=============================");

String cont = res.toString();

ReadWriteFile.write(cont, filePathStr);

}

}

/**

* 验证读取的字符串信息

* 和更新字符串信息

* @param str

*/

private static String updateStr(String str) {

//判断字符串是否是需要更新的字符串

boolean isok = filterStr(str);

int strNum = StringValidation.strNum(str, StringValidation.ch);

if(isok || strNum == 0) {

return str;

} else {

String temp = "";

for(int i=1;i<=strNum/2;i++) {

temp += " //$NON-NLS-"+i+"$"; //需要添加的字符

}

str = str+temp;

}

return str;

}

//过滤文件类型

private static FileFilter ff = new FileFilter() {

public boolean accept(File pathname) {

String path = pathname.getName().toLowerCase();

logger.info("FileFilter path::::"+path);

//只匹配 .java 结尾的文件

if (pathname.isDirectory() || path.endsWith(".java")) {

return true;

}

return false;

}

};

/**

* 过滤掉不需要处理的字符串

* @param str

* @return

*/

public static boolean filterStr(String str) {

boolean isok = false;

//过滤字符串

isok = (str.indexOf("import ")>=0)

|| (str.indexOf("package ")>=0)

|| (str.indexOf(" class ")>=0)

|| (str.indexOf("//$NON-NLS")>=0)

|| (str.indexOf("//")==0)

|| (str.indexOf("/*")>=0)

|| (str.indexOf("*")>=0)

|| (str.trim().indexOf("@")==0)

|| (str.indexOf("\"")==-1)

|| ("".equals(str))

|| isCh(str);

return isok;

}

/**

* 验证字符串是否含有中文字符

* @param str

* @return

*/

public static boolean isCh(String str) {

Pattern pa = Pattern.compile("[\u4E00-\u9FA0]");

Matcher m = pa.matcher(str);

boolean isok = m.find();

return isok;

}

总结:当我们拿到一个别人给的需求,先不要急于去处理,先分析,再分析,然后做出最优的解决方案,处理好这项工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能

最近在开发浏览器碰到这么一个需求&#xff1a;点击地址栏的时候&#xff0c;需要全选并调出键盘&#xff0c;再次点击就取消全选显示光标。点击屏幕除地址栏其他位置时&#xff0c;键盘隐藏&#xff0c;隐藏光标。大部分浏览器都是这样的逻辑&#xff0c;这样可以提高用户体验…

java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码

RSA的应用RSA是一种非对称加密算法。现在&#xff0c;很多登陆表单的密码的都采用RSA加密&#xff0c;例如京东中的登陆使用公钥对密码进行加密java使用RSA加密方式实现数据加密解密&#xff0c;需要首先产生私钥和公钥测试代码public static void main(String args[]){try {RS…

java线程卡住排查_基于 Java 线程栈 排查问题

除日志外&#xff0c;还有没有别的方式跟踪线上服务问题呢&#xff1f;或者&#xff0c;跟踪并排除日志里无法发现的问题&#xff1f;方法当然是有的&#xff0c;就是通过现场快照定位并发现问题。我们所说的现场&#xff0c;主要指这两方面&#xff1a;Java 线程栈。线程栈是J…

java实验二答案天津商业大学_天津商业大学信息安全实验一

天津商业大学信息安全实验一 1《信息安全技术》实 验 报 告 书实验名称&#xff1a; 实验一Internet应用风险专 业&#xff1a; 电子商务班 级&#xff1a; 1203班姓 名&#xff1a; 代常发学 号&#xff1a; 20124934指导老师&#xff1a; 丁雷信息工程学院2015 年 5 月2目 录…

java前端的日期插件_几个前端时间插件总结

几个前端时间插件总结总结一下几款时间插件&#xff0c;分别是- [ ] jeDate 手册http://www.jemui.com/jedate/- [ ] bootstrap-datetimepicker 下载地址- [ ] My97DatePicker 下载地址- [ ] jQuery UI 插件Datepicker下载地址并没有哪款完全超越另外一款&#xff0c;主要还是看…

t3s java_关于JAVA的this关键字

网上对this的描述很朦胧&#xff0c;有的说this表示的是当前对象自己&#xff0c;有的说this是当前对象的引用。可是自己写了如下的测试代码&#xff0c;产生了几个问题&#xff1a;1 public class T3AboutThis {23 public static void main(String[] args) {4 new…

Java插件自动保存浏览器书签_多浏览器书签同步插件EverSync

有时上网时会遇到浏览器不能正常显示的问题。(比如我的火狐浏览器无法正确显示微信公众号管理后台&#xff0c;在chrome上可以正常显示)&#xff0c;所以我的电脑里安装了chrome和firefox两个浏览器。但是时间长了&#xff0c;会出现两个浏览器上书签不同步的问题。原来自己的解…

java连接并操作redis_java 使用 jedis 连接 redis 并进行简单操作

packagetest;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.junit.Test;importredis.RedisUtil;importredis.clients.jedis.Jedis;public classRedisTest {private RedisUtil redisUtil newRedisUtil();//字符串操作…

java将异常输出到日志_【ThinkingInJava】25、将异常输出记录到日志

/*** 书本:《Thinking In Java》* 功能:将异常输出记录到日志中。* 文件:LoggingExceptions.java* 时间:2015年4月8日21:11:51* 作者:cutter_point*/package Lesson12_error_handling_with_exceptions;import java.io.PrintWriter;import java.io.StringWriter;import java.uti…

2013年蓝桥杯软件大赛预赛java本科b组答案_2013年蓝桥杯软件大赛预赛C本科B组试题...

第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛结果题目标题: 高斯日记大数学家高斯有个好习惯&#xff1a;无论如何都要记日记。他的日记有个与众不同的地方&#xff0c;他从不注明年月日&#xff0c;而是用一个整数代替&#xff0c;比如&#xff1a;4210后来人们知道…

java script的trim_Javascript中实现trim()函数的两种方法

在JavaScript中我们需要用到trim的地方很多&#xff0c;但是JavaScript又没有独立的trim函数或者方法可以使用&#xff0c;所以我们需要自己写个trim函数来实现我们的目的。方案一&#xff1a;以原型方式调用&#xff0c;即obj.trim()形式&#xff0c;此方式简单且使用方面广泛…

hive mysql集群安装_HIVE完全分布式集群安装过程(元数据库: MySQL)

[rootnode01 mysql]# mysql -u hive -pEnter password:mysql> create database hive;Query OK, 1 row affected (0.00 sec)mysql> use hive;Database changedmysql> show tables;Empty set (0.00 sec)3)解压缩hive安装包tar -xzvf hive-0.9.0.tar.gz[hadoopnode01 ~]$…

php海外研发,国外主流PHP框架比较

【IT168技术分析评论】最近简单的使用了目前在国内用的比较多的几个主流国外PHP框架(不包括国内框架)&#xff0c;大致对这些框架有个直观上的感受&#xff0c;简单分享一下&#xff0c;对于哪些做框架选型的时候&#xff0c;权当一个参考。主要参考的框架包括&#xff1a;Code…

php 正则提取日期,PHP正则匹配日期和时间(时间戳转换)的实例代码

先来一个比较简单实用的代码日期YYYY-MM-DD$str "";$isMatched preg_match("/^d{4}(-|/|.)d{1,2}1d{1,2}$/", $str, $matches);var_dump($isMatched, $matches);php需要一定的时间格式才能转换成时间戳(表示从格林威治时间1970年01月01日00时00分00秒起至…

php7生命周期,PHP 的生命周期与模块的sapi 原理

PS &#xff1a; SAPI&#xff1a;php所提供与其他程序的接口。先说说sapi 这是应用层与核心层的桥梁&#xff0c;用翻译的方式来做个比较恰当的比喻吧。这是一个中国人 名字叫Code这是叫做php-cli的英语翻译&#xff0c;擅长体育翻译这是个叫做php-cgi的翻译&#xff0c;擅长画…

php分解质因数,用PHP如何实现将一个整数分解为质因数的积?

先对数字进行因式分解算法再过滤结果集中&#xff0c;不符合的结果集。class Helper{public function chechPrime($num){for ($i floor(sqrt($num)); $i > 1; --$i) {if ($num % $i 0) {return false;}}return true;}public function getFactorNumber(array &$result,…

php oracle 中文字段,怎么解决php oracle乱码问题

php oracle乱码是由于没有正确的配置字符集信息导致的&#xff0c;其解决办法就是通过PLSQL运行“select * from V$NLS_PARAMETERS;”获取oracle的字符集&#xff0c;并重新设置正确的字符集即可。PHP Oracle 中文乱码问题通常缺省配置连接Oracle在处理中文时都会遇到乱码问题&…

php中数组生成下拉选项,php数组生成html下拉列表的方法

这篇文章主要介绍了php数组生成html下拉列表的方法,涉及php根据数组动态创建html代码的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php数组生成html下拉列表的方法。分享给大家供大家参考。具体如下&#xff1a;这段代码可根据定义好的php数组动态生成一…

用matlab数学综合实验,MATLAB与数学实验(第2版)

MATLAB与数学实验(第2版)作者&#xff1a;艾冬梅 李艳晴 张丽静 刘琳出版日期&#xff1a;2014年06月文件大小&#xff1a;46.48M支持设备&#xff1a;&#xffe5;18.00在线试读适用客户端&#xff1a;言商书局iPad/iPhone客户端&#xff1a;下载 Android客户端&#xff1a…

mysql主从复制超简单,mysql简单主从复制

在master配置文件中追加log-binmysql-binserver-id1log-bin-indexmaster-bin.index[mysqld]group_replication.so### 重启mysql服务sudo /etc/init.d/mysql restart### 在slave配置文件中追加server-id2relay-log-indexslave-relay-bin.indexrelay-logslave-relay-bin[mysqld]#…