Java读写文件夹下的txt文件,已读的txt文件修改后缀名为.bat。
2014-12-08 14:53
483 查看
package test1; /** * 一个文件夹,里面包括很多个txt文件或者子文件夹,依次读取文件夹里面的内容, * 以%~、~%开始结尾为一条数据,依次遍历解析到需要的数据。 */ 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.FilenameFilter; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map; public class Big { public static final String SRC_FILE_NAME = "F:\\java\\testRead"; public static final String DEC_FILE_NAME = "F:\\java"; private static final int FILE_ROWS = 3; //每个文档写的行数 static OutputStreamWriter output = null; static int indexFlag = 1; //写的文件标识 static int count = 0; //记录条数 static final String separator = ":"; static final String balnkSpace = " "; static final String A = "A"; static final String B = "B"; static final String C = "C"; static final String D = "D"; public static boolean readFile(String filepath) throws FileNotFoundException { //OutputStreamWriter 将字节流转换为字符流。 output = new OutputStreamWriter(new FileOutputStream(new File(SRC_FILE_NAME + "newFile_" + indexFlag++ +".txt"))); File file = new File(filepath); if (file.isDirectory()) { //过滤只解析后缀为.txt的文件 String[] filelist = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { if(name.endsWith(".txt")) { return true; } return false; } }); for (int i = 0; i < filelist.length; i++) { File txtfile = new File(filepath + "\\" + filelist[i]); if (!txtfile.isDirectory()) { try { readTxtFile(txtfile); } catch (Exception e) { e.printStackTrace(); } } else if (txtfile.isDirectory()) { readFile(filepath + "\\" + filelist[i]); } } } return true; } /** * 读取txt文件,获取需要的字段,写入新的txt文件,当txt文件解析完毕,修改txt文件后缀。 * @param fileName * @return * @throws Exception */ public static String readTxtFile(File fileName) throws Exception { FileReader fileReader = null; BufferedReader bufferedReader = null; StringBuffer buffer = new StringBuffer(); try { fileReader = new FileReader(fileName); bufferedReader = new BufferedReader(fileReader); try { String read = null; Map<String, String> dataMap = new HashMap<String, String>(); while ((read = bufferedReader.readLine()) != null) { int indexOf = read.indexOf(separator); if (indexOf > 0) { String key = read.substring(0,indexOf); String value = read.substring(indexOf+1); if (value !=null || !value.equals("")) { dataMap.put(key, value); } } if (read.contains("~%")) { if (dataMap.get(A)!=null && dataMap.get(B)!=null) { buffer.append(dataMap.get(A)); buffer.append(balnkSpace); buffer.append(dataMap.get(B)); buffer.append(balnkSpace); buffer.append("\r\n"); dataMap.clear(); String res = buffer.toString(); //判断输入的条数,如果大于50000则新建一个txt文件 count++; if (count % 3 == 0) { output.flush(); output.close(); output = new OutputStreamWriter(new FileOutputStream(new File(SRC_FILE_NAME + "newFile_" + indexFlag++ +".txt"))); } /** * 符合条件的信息写入新的txt文档。 */ output.write(res); } } } /** * 注意:此处需要关闭流才能修改后缀成功。WHY? * 关闭是为了回收资源,IO设备在打开时会占用资源。如果不用close关闭,占用的资源就不会释放。 */ bufferedReader.close(); //当一个txt读完,修改该文档的后缀名为.bat update(fileName); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { if (bufferedReader != null) { bufferedReader.close(); } if (fileReader != null) { fileReader.close(); } } return buffer.toString(); } private static void update(File file) { String filename = file.getAbsolutePath(); if (filename.indexOf(".") >= 0) { filename = filename.substring(0,filename.lastIndexOf(".")); } file.renameTo(new File(filename+".bat")); //改名 } public static void main(String[] args) { try { readFile("F:\\java\\testRead"); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
相关文章推荐
- 将java 文件夹里面的.java 文件 拷贝到temp文件夹下,并且修改后缀名为.txt
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集
- 使用bat批量修改某个目录下的文件后缀 - 对于只认识txt的设备很有用
- 使用tcl/expect实现对文件夹下文件批量修改后缀名
- java中实现对文件以及文件夹的删除、复制、修改
- java找到文件夹下所有的指定格式文件并输出到txt
- 批量修改一个文件夹下所有的文件后缀
- Java创建TXT文件并进行读、写、修改操作
- 面试题之——将文件夹下java文件写入到新的文件夹,并修改扩展名
- 批量修改指定文件夹下所有后缀名的文件为另外后缀名的java代码
- 用JAVA扫描指定文件夹下面所有以.txt结尾的文件,并将其绝对路径输出 .
- 复制一个文件夹下所有文件(包括子文件夹)并修改文件后缀名 java实现加密文档unlock
- java读写文件-经过多方搜索整合成我需要的功能(读写指定文件夹下面的多个指定名称的txt中的内容全部写入到一个指定的txt中)
- PHP 修改目录下所有与文件夹重名的前缀文件为index.后缀
- 如何修改某个扩展名(如.java .txt)的文件的图标
- 遍历文件夹access_log中的所有文件localhost_access_log*.txt,提取IP插入数据库中java代码
- Java创建TXT文件并进行读、写、修改操作
- 内容文件Java创建TXT文件并进行读、写、修改操作
- java创建TXT文件并进行读、写、修改操作