首页 » JAVA » java 截取文件每行字符串

java 截取文件每行字符串

今天有邮件让修改一批数据,格式如
胸泌科护站(即将删除)24080225
骨1科护站(即将删除)24080226
骨2科护站(即将删除)2408022A
急救中心外科护站(即将删除)2408022G
急救中心急诊科护站(即将删除)2408022H

处理时编号有用,也就是要截取后几位,因为编号长度是固定的,在UE中没找到办法,用sed ,awk 做shell应该也可以实现,后来想搞个java类来实现,跨平吧嘛,环境一般都有
代码如下

import java.io.*;

public class Substr{

public static void main(String[] args){
	Substr sub = new Substr();
		//sub.readFileByLines("c:\\a.txt",-8);
	if(args.length==2){
	  sub.readFileByLines(args[0],Integer.parseInt(args[1]));
	}else if(args.length==3){
	  sub.readFileByLines(args[0],Integer.parseInt(args[1]),Integer.parseInt(args[2]));
	} else{
	  System.out.println("参数有误!");
	}
}


private void readFileByLines(String fileName,int start,int length) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            String printStr = "";
         
            
            while ((tempString = reader.readLine()) != null) {
                
            	if(tempString.length()>(start+length)){
            	  printStr=tempString.substring(start, start+length);
            	}
                System.out.println(printStr);
          
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }
private void readFileByLines(String fileName,int start){
	File file = new File(fileName);
    BufferedReader reader = null;
    try {
        
        reader = new BufferedReader(new FileReader(file));
        String tempString = null;
        String printStr = "";
          
        while ((tempString = reader.readLine()) != null) {
        	
        	if(tempString.length()>Math.abs(start)){
          	  if(start<0){
          	   printStr = tempString.substring(tempString.length()+start, tempString.length());
          	  }
          	}
            System.out.println(printStr);
           
        }
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e1) {
            }
        }
    }
}

}

运行效果
C:\>java Substr "c:\a.txt" -8
24080225
24080226
2408022A
2408022B
2408022D
2408022F
24080222

C:\>java Substr "c:\a.txt" 2 10
科护站(即将删除)2
科护站(即将删除)2
科护站(即将删除)2
中心手术室(即将删除
中心内2科护站(即将
室(即将删除)240
打赏

对不起,这篇文章暂时关闭评论。