在网上看到matlab模拟linux的grep命令,就想到用java也来模拟下linux命令grep,
算法非常简单,,这里直接上代码:
/** * 模拟Unix命令grep操作,输出行号和行内容 * @param path 待查询的文件路径 * @param query 待查询的字符串 * @throws IOException
* */ public static void grep(String path,String query) throws IOException{ int lineno=0; String line = null; FileReader in=new FileReader(path); BufferedReader br=new BufferedReader(in); System.out.println("所需处理的文件:"+path); System.out.println("行号-------------"+"包含' "+query+" '的行内容"); line=br.readLine(); while(line!=null){ lineno++; if(line.indexOf(query)!=-1) System.out.println(lineno+"---------------"+line); line=br.readLine(); } }
在junit4写测试代码如下:
//@Ignore @Test public void testGrep() throws Exception { String query="链接"; String path="E:/greptest.txt"; StringUtil.grep(path,query); }
对于如下的测试文件greptest.txt:
Java Servlet API中forward() 与redirect()的区别
前者仅是容器中控制权的转向, 在客户端浏览器地址栏中不会显示出转向后的地址; 后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。 这样,从浏览器的地址栏中可以看到跳转后的链接地址。 所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法, 并且,这样也有助于隐藏实际的链接。在有些情况下, 比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
得到的测试结果如下:
所需处理的文件:E:/greptest.txt行号-------------包含' 链接 '的行内容6---------------后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。7---------------这样,从浏览器的地址栏中可以看到跳转后的链接地址。9---------------并且,这样也有助于隐藏实际的链接。在有些情况下,