当前位置:首页 > iOS开发专区 > 正文内容

逐行读取文件内容并修改文件

14年前 (2011-09-28)iOS开发专区8653
package readFile;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.File;
import java.util.*;
import java.lang.String;

public class UpdateFile {


public static void main(String [] args){

  try{
   //读取给定目录下的所有文件
   File dir = new File("G:\\oldPlayer");  
   File[] files = dir.listFiles();  
   if (files == null)  
    return;
   //文件名
   String fileName = "";
   for (int i = 0; i < files.length; i++) {  
    //判断此文件是否是一个文件  
    if (!files.isDirectory()) {  
     System.out.println(files.getName());
     fileName = files.getName();
     modifyFile(fileName);
    }  
   }
  }catch(Exception ex){
   ex.printStackTrace();
   System.out.println("file read or write error");
  }
}


public static void modifyFile(String fileName) {
  try{
   //文件路径
   String filePath = "";
   //修改后新文件路径
   String newFilePath = "";
   filePath = "G:\\oldPlayer\\" + fileName;
   //读取文件
   BufferedReader File_pwd=new BufferedReader(new FileReader(filePath));
   //将文件内容按行存到list;
   List<String> list=new ArrayList<String>();
   //声明读文件行的临时变量
   String temp;                                            
   do{                                                      
    //按行循环读取文件
    temp=File_pwd.readLine();
    System.out.println("读取到的原文件:"+temp);
    list.add(temp);                                      
    //把读取到的行存入数组变量
   }while(temp!=null);
   File_pwd.close();

   //将内容写到新文件
   newFilePath = "G:\\newPlayer\\" + fileName;
   BufferedWriter File_bak=new BufferedWriter(new FileWriter(new File(newFilePath)));
   String s=new String();
   //为注释行的标示
   int commentFlag = 0;
   for(int j=0;j<list.size()-1;j++){
    //使用循环把行字符串取出来,并调用replaceall函数,对字符内容进行正则表达式替换
    s=list.get(j);
    if (s.indexOf("//") >= 0 || s.indexOf("*") >= 0) {
     s = s + " ";
     commentFlag = 1;
    } else if (!"".equals(s.trim())) {
     commentFlag = 0;
    }
    //如果前一行为注释行,该行为空行则删除
    if (commentFlag == 1) {
     if (!"".equals(s.trim())) {
      s.replace(" ", "    ");
      File_bak.write(s+"\n");  
     }
    } else {
     s.replace(" ", "    ");
     File_bak.write(s+"\n");  
    }
   }
   //必须先刷新,才能用close关闭
   File_bak.flush();
   File_bak.close();
   System.out.println("file write success");
  }catch(IOException ex){
   ex.printStackTrace();
   System.out.println("file read or write error");
  }
}
}


扫描二维码推送至手机访问。

版权声明:本文由 果签工坊 发布,如需转载请注明出处。

本文链接:https://applep12.vip/programming/zPry6PaZxsLxbzw.html

分享给朋友:

相关文章

js直接操作access数据库

<html>    <head><titel>jstest</title></head>    &l...

tomcat 虚拟内存配置(含安装版、解压版)

1.适用于解压版Tomcatwindows 下 tomcat 虚拟内存配置      在tomcat的bin目录下,找到catalina.bat 文件,打开,在最上面添加这样一句:...

重新设置 Myeclipse workspace

启动不提示 “Workspace Launcher”对话框的情况下首次启动Eclipse/MyEclipse时, 会弹出"Workspace Launcher"对话框, 提示设置Workspace路径. 设定好路径后,...

初学extjs 了解的一些基本属性

1.  Ext.Msg.alert("角色管理信息提示", "角色权限保存成功!");2.  store.baseParams.jsonString = jso...

关于extjs组件中的内存泄露问题

所有component的子类都自动的参与标准的ext组件的生命周期:创建,渲染,销毁,这些操作由Container类提供。在创建容器时,组件可以通过item配置选项添加到容器中,或者可以add方法动态地添加。所有组件都注册到了ext.com...

8088汇编手册

一、数据传输指令 --------------------------------------------------------------------------------     它们在存贮器...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。