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
对不起,这篇文章暂时关闭评论。