精华内容
下载资源
问答
  • Java批量操作文件小结

    千次阅读 2019-06-09 12:43:15
    近来实现的某些功能需要对文件进行批量操作,为方便以后查找阅读,作以下总结。 如需要对文件进行批量重命名、删除文件夹中的所有文件等。 例:删除指定文件夹中的所有文件:(批量删除文件是文件操作经常用到的) ...

    近来实现的某些功能需要对文件进行批量操作,为方便以后查找阅读,作以下总结。

    如需要对文件进行批量重命名、删除文件夹中的所有文件等。

    例:删除指定文件夹中的所有文件:(批量删除文件是文件操作经常用到的)

    先创建一个文件批量管理工具类,关键代码如下

        //删除文件夹及其中内容

        public  void deleteDictionary(File fileIn) {

            if (fileIn.isFile()) {

                deleteFiles.add(fileIn); //将删除的文件保存到集合中,

                fileIn.delete();//如果是文件就删除

            } else {//如果是一个文件夹

                File[] files = fileIn.listFiles();

                for (File file : files) {

                deleteDictionary(file);//如果不是空文件夹则就迭代 deleteDictionary()方法

                }

                fileIn.delete();//空文件夹就删除

            }

        }

    //删除文件夹下的内容(不删除指定的文件夹)

        public  void deleteFiles(File FileList) {

            if (FileList.listFiles().length == 0) {//如果是空文件夹return

                return;

            } else {

                File[] files = FileList.listFiles();//获取FileList的文件列表

                for (File file : files) {//遍历

                    if (file.isFile()) {

                       deleteFiles.add(file); //添加到删除到集合,以便显示删除记录

                       file.delete();//删除指定所有文件

                    } else {

                       if (file.listFiles().length == 0) {

                           file.delete();//删除所有空的文件夹

                       } else {

                           deleteDictionary(file);//删除所有非空的文件夹

                       }}

                }

            }

    }

    上面代码的两个方法主要是使用递归来实现对文件的删除,其中需要注意的是使用File类对文件操作时,要注意文件的类型(是否为空的文件夹等),对不同的文件类型需要进行不同的判断以及不同的操作。

    Servlet关键代码(doPost方法)

        List<File> delFiles = null;

        request.setCharacterEncoding("UTF-8");

        String filePaths = request.getParameter("filePath");//获取文件路径   

        FilesUtil util = new FilesUtil();

            if(filePaths!=null&&!filePaths.equals("")){

                File files = new File(filePaths);

                util.deleteFiles(files);//调用方法删除文件夹中的所有子文件

                delFiles = util.getDeleteFiles();//获取删除列表

                 //省略了部分代码

            }

    上面代码主要是从获取文件路径,然后调用FilesUtil类的deleteFiles方法对指定文件夹进行删除,删除后,调用getDeleteFiles方法获取到删除文件列表,将该集合以及文件路径保存到域中,转发到index.jsp

    index.jsp关键代码

    将从Servlet传过来的集合进行遍历输出到table

    <center>

    <form action="${path}/FileServlet" method="post" >

    <input type="hidden" name="driverPath" id="driverPath" />

    <h1>删除指定文件夹中的文件</h1>

            <tr height="30">

                <td  colspan="2">文件夹路径:

                    <input type="text" name="filePath" value="<%if(filePaths!=null&&!filePaths.equals("")){out.println(filePaths);} %>"/>

                    <input type="submit"  value="删除"/>          

                </td></tr><tr >

                <td align="left" colspan="2">

                <p>删除记录</p>

                    <textarea rows="6" cols="50"><%

                       if(delFiles!=null&&delFiles.size()>0){

                           for(File file:delFiles){

                               out.println(file.getAbsolutePath());

                           }

                       }

                     %></textarea>

                </td>   </tr></table></form></center>

    结果:

    :在指定目录下搜索文件(类似文件管理器的文件搜索,在指定文件路径搜索指定类型的文件)

    index.jsp关键代码 主要是将传过来的结果files集合遍历输出

    <form action="${path}/FileDemoServlet" method="post" id="form1">

    <input type="hidden" name="typeString" id="typeString" />

        <table border="0" width="500">

            <tr><td  align="right">文件路径:</td>

                <td ><input type="text" name="filePath" id="filePath" />

    &nbsp;&nbsp; <input type="submit" name="submit"  onclick="serach()" value="搜索"/>

    </td></tr><tr>

                <td  align="right">文件名称:</td>

                <td ><input type="text" name="fileName" id="fileName" /></td>

            </tr><tr>

                <td  align="right">后缀:</td>

                <td ><select id="typeName">

                       <option value=".txt">.txt</option>

                       <option value=".zip">.zip</option>

                       <option value=".gif">.dll</option>

                       <option value=".jpg">.jpg</option>

                       <option value=".bmp">.bmp</option>

                       <option value=".xls">.xls</option>

                       <option value=".doc">.doc</option>

                       <option value=".xml">.xml</option>

                       <option value=".rar">.rar</option>

                    </select></td></tr>

            <tr height="100">

                <td colspan="2" align="center">

                    <textarea rows="6" cols="45"><%

                       if(files!=null){

                           for(File file:files){

                               out.println(file.getAbsolutePath());

                           }

                       }

                     %></textarea>

                </td>

            </tr>

    </table>

    serach函数 获取到后缀下拉框的值并赋给隐藏的input传递到Servlet

    function serach(){

            var typeName = document.getElementById("typeName");

            document.getElementById("typeString").value= typeName.value

    }

    FileDemoServlet关键代码 获取传过来的文件路径,文件名关键字、扩展名,不为空则调用搜索文件的方法,将方法返回的集合保存到域中后转发到index.jsp

    List<File> files = null;

    request.setCharacterEncoding("UTF-8");       

    String filePath = request.getParameter("filePath");      //获取文件路径

    String fileName = request.getParameter("fileName");      //获取文件名关键字

    String extendName = request.getParameter("typeString");  //文件扩展名

    if(filePath!=null&&!filePath.equals("")&&

    fileName!=null&&!fileName.equals("")&&

                extendName!=null&&!extendName.equals("")){   

    files= FileUtil.findFiles(filePath,fileName,extendName);//调用的方法

    //省略了部分代码

            }

    定义一个返回值为List<File>的方法,用于实现文件搜索功能,该方法三个参数分别是指定搜索目录路径,搜索文件名称,文件的扩展名,获取到文件数组后遍历文件数组,再调用findFileName方法(文件匹配方法),符合匹配就添加到集合中

        public static List<File> findFiles(String baseName, String tarFileName,String exStr) {

           List<File> fileList = new ArrayList<File>();//定义保存返回值的List对象

            File baseDir = new File(baseName); //创建File对象,参数为baseName

            if (!baseDir.exists() || !baseDir.isDirectory()) {//不是目录或不存在

                return fileList;                           //返回

            }

            String tempName = null;

            File[] files = baseDir.listFiles(new ExtendFileNameFilter(exStr));       //获取参数目录下的文件数组

            for (File file:files) {    //循环遍历文件数组

                if (!file.isDirectory()) {    //如果数组中的文件不是一个目录

                    tempName = file.getName();         //获取该数组的名称

                    if (findFileName(tarFileName, tempName)) { //调用文件匹配方法

                fileList.add(file.getAbsoluteFile()); //将指定的文件名添加到集合中

                    }}}

            return fileList;

    }

    findFileName方法 这个方法用于查找匹配的文件,如果查找的文件名称和搜索的方式匹配,就返回true,否则false

    public static boolean findFileName(String FileName, String name) {

            int length = FileName.length();    // 获取参数的长度

            int startLength = name.length();

            int strIndex = 0;

            char eleChar;

            for (int i = 0; i < length; i++) { // 遍历字符参数字符串的字符

            eleChar = FileName.charAt(i);     // 获取字符串中每个索引位置的字符

                if (eleChar == '*') {      // 如果是星号表示任意多个字符

                    while (strIndex < startLength) {

                        if (findFileName(FileName.substring(i + 1), name

                                .substring(strIndex))) { // 如果文件名与搜索模型匹配

                            return true;

                        }

                        strIndex++; }

                } else if (eleChar == '?') {   // 如果包含问号 表示一个任意字符

                    strIndex++;

                    if (strIndex > startLength) { // 如果str中没有字符可以匹配“?”

                        return false;

                    }

                } else {

                    if ((strIndex >= startLength) || (eleChar != name.charAt(strIndex))) {      // 如果没有查找到匹配的文件

                        return false;

                    }

                    strIndex++;

                } }

            return (strIndex == startLength);    

    }

    ExtendFileNameFilter过滤器代码(用于判断是否文件的扩展名是否跟指定扩展名相同,相同返回true,反之false

    public class ExtendFileNameFilter implements FileFilter {

         private String extendName;//过滤文件扩展名

         public ExtendFileNameFilter(String extend){

             this.extendName = extend;

         }

         @Override

         public boolean accept(File pathname) {

             if (pathname.getName().toLowerCase().endsWith(extendName.toLowerCase())

                 ||pathname.isDirectory())//文件的扩展名是否跟指定扩展名一样

             {

             return true;

             } 

             else {

             }

             return false;

         }

    }

    效果

     

    展开全文
  • java批量操作sql替换数据库数据

    千次阅读 2017-04-28 10:30:56
    本文主要用于批量操作数据库数据,你可以使用这个代码变化成你想要的,替换一下行数据,或者写出来的时候,要写什么替换一下就可以了。

    如果平时遇到解释excel表格,就可以使用这个demo来变换你想要的代码,这里只是用于操作批量替换数据库数据库,解释excel文件里,要替换的文件内容,把sql解释出来,执行。

    	public static void main(String[] args) throws IOException {
    		String filePath = "D:\\MyDownloads\\Download\\delete.xls";
    		List<String> list = MyXmlUtil.parse(filePath);
    		
    		File file = new File("D:\\MyDownloads\\Download\\deleteData1.txt");
    		OutputStream out = new FileOutputStream(file);
    		
    		for(String row:list){
    			String[] lows = row.split(",");
    			String sql = "delete from waybill.waybill where cp_code='YUNDA' AND mail_no='"+lows[2]+"' AND package_code ='"+lows[1]+"';"; 
    		//	String sql = "'"+lows[1]+"',";
    			System.out.println(sql);
    			out.write(sql.getBytes());
    			out.write("\r\n".getBytes());
    			out.flush();
    		}
    	}


    parse方法


    public static List<String> parse(String filePath) {
    		LOG.info("start to parse xml");
    
    		List<String> results = new ArrayList<String>();
    		try {
    
    			File file = new File(filePath);
    			
    			InputStream bis = new FileInputStream(file);
    
    			Workbook sourceBook = WorkbookFactory.create(bis);
    
    			LOG.info("start to get sheet");
    
    			Sheet sourceSheet = sourceBook.getSheetAt(0);
    
    			StringBuilder sb = new StringBuilder();
    
    			int rowIndex = 1;
    			while (true) {
    				Row row = sourceSheet.getRow(rowIndex);
    				if (null == row) {
    					break;
    				}
    				int colIndex = 0;
    				while (true) {
    					if (StringUtil.isEmpty(cellVal(row.getCell(colIndex), "s"))) {
    						break;
    					}
    					sb.append(cellVal(row.getCell(colIndex), "s"));
    					sb.append(",");
    					colIndex++;
    				}
    				results.add(sb.substring(0, sb.toString().length() - 1));
    				sb.delete(0, sb.length());
    				rowIndex++;
    			}
    		} catch (Exception e) {
    			LOG.error("parse xml fail", e);
    		}
    		return results;
    	}

    public static String cellVal(Cell cell, String type) {
    		switch (type) {
    		case "s":
    			try {
    				return cell.getStringCellValue().trim();
    			} catch (Exception e) {
    				try {
    					return new BigDecimal(cell.getNumericCellValue())
    							.toString();
    				} catch (Exception e2) {
    					return "";
    				}
    			}
    		case "d":
    			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			return sdf.format(cell.getDateCellValue());
    		default:
    			return "";
    		}
    	}


    展开全文
  • java批量操作redis命令

    千次阅读 2017-06-08 11:28:52
    package redis; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; public class PipelineDemo { private static Jedis jedis = new Jedis("192.168.10.250", 6379);...
    package redis;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.Pipeline;
    
    public class PipelineDemo {
    	private static Jedis jedis = new Jedis("192.168.10.250", 6379);
    	
    	public static void pipeline(){
    		jedis.select(0);
    		Pipeline pipeline = jedis.pipelined();
    		long start = System.currentTimeMillis();
    		for(int i=0;i<10000;i++){
    			pipeline.set("p"+i, "p"+i);
    			
    		}
    		pipeline.sync();
    		long end = System.currentTimeMillis();
    		System.out.println(end-start);
    		jedis.close();
    	}
    	
    	public static void normal(){
    		jedis.select(0);
    		long start = System.currentTimeMillis();
    		for(int i=0;i<10000;i++){
    			jedis.set("p"+i, "p"+i);
    			
    		}
    		long end = System.currentTimeMillis();
    		System.out.println(end-start);
    	}
    	
    	public static void main(String[] args) {
    		pipeline();
    //		normal();
    		
    	}
    }
    

    展开全文
  • Java 批量ping操作

    千次阅读 2018-06-15 14:38:46
    批量ping操作1 批量ping操作,所需jar包 &lt;dependency&gt; &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib&lt;/artifactId&gt; &lt...

    批量ping操作

    1 批量ping操作,所需jar包

            <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
                <classifier>jdk13</classifier>
            </dependency>
            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>4.0.0</version>
            </dependency>
            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna-platform</artifactId>
                <version>4.0.0</version>
            </dependency>

    2 工具包下载

    点击下载工具包 dpso,解压后,拷贝到linux下,如:/opt/log/目录下

    3 Java测试代码

    package com.wutongyu.test;
    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    /**
     * Created by wutongyu on 2018/2/24.
     */
    public class TestPing {
        public interface LgetLib extends Library {
            LgetLib INSTANCE = (LgetLib) Native.loadLibrary("/opt/log/dpso/host_scan/lib/libdba_capi.so", LgetLib.class);
            Pointer callFunc(String action, String params );
            void freeFunc( Pointer paramPointer );
        }
    
        public static String call(String action, String params) {
            Pointer point=  LgetLib.INSTANCE.callFunc(action, params);
            String ret = point.getString(0L);
            LgetLib.INSTANCE.freeFunc(point);
            return ret;
    
        }
        public static void main(String[] args) {
            SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            while (true){
                Date date=new Date();
                String dateStr = bartDateFormat.format(date);
                String callstr = TestPing.call("host_scan", "{\"count\":5, \"timeout\":10000, \"interval\":100, \"hosts\":[\"10.238.129.11\",\"10.238.129.41\",\"10.238.129.18\",\"10.238.129.47\",]}");
                System.out.println(dateStr+"    "+callstr);
                try {
                    Thread.sleep(120*1000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    4 返回值及解析

    返回如下Json串:
    {
        "errcode":"ERRCODE",
        "errmsg":"ERRMSG",
        "data":
        [
            {
                "host":"10.238.129.11",
                "min_reply_msec":"0",
                "max_reply_msec":"0",
                "avg_reply_msec":"0",
                "total_count":"5",
                "lost_count":"5",
                "lost_ratio":"1.0"
            },
            ...
        ]
    }
    参数说明:
        host: ipv4或者ipv6地址,
        min_reply_msec: 最小响应时间,单位:毫秒,
        max_reply_msec: 最大响应时间,单位:毫秒,
        avg_reply_msec: 平均响应时间,单位:毫秒,
        total_count: 总包数,
        lost_count: 丢包数,
        lost_ratio: 丢包率,以实数表示,例如:0.5表示丢包率50%
    一般的,当丢包率为1.0时,认为ping不通  

    展开全文
  • java批量删除操作

    千次阅读 2017-03-25 18:28:48
    id ="del" > ..."批量删除错题" , httpMethod = "POST" ) public Dto<Test> del ( @ApiParam ( "错题id" ) @RequestParam String[] ids) { return customService .del(ids) ; }
  • MongoDB 通过 Java 代码 批量操作

    千次阅读 2018-09-17 17:00:01
    MongoDB提供了一种称为 BulkWrite(块)操作方式,数据不会被立即被持久化到数据库中,而是等待程序调度,确定合适的时间持久化到数据库中,其实就是批量操作。 API :com.mongodb.client.MongoCollect...
  • (1)三种插入操作的方法 1.1 利用for循环的批量插入 示例xml <insert id="insertUser"> insert into test_user (u_name,create_date) value (#{userName},SYSDATE()) </insert> 示例代码: ...
  • java批量删除

    2016-03-22 11:17:04
    界面批量删除
  • Java操作Oracle批量入库的问题 技术文档
  • Java实现oracle数据批量操作

    千次阅读 2018-08-18 11:51:14
    TestDemo:结合位于java.sql下面的接口 PreparedStatement和oracle事务实现批量删除 常用方法: int [] executeBatch(): 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。 ...
  • 对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十分熟悉的,尤其是在小型公司的开发人员来讲,大部分的工作也就是这些了。但是对于一个大型系统而言,简单的CRUD是无法存活下来的,因为它的数据量极大,不是...
  • java批量删除,前后台操作

    千次阅读 2015-04-14 09:23:48
    java批量删除,复选框,json数据,ajax回调
  • Java API批量操作Elasticsearch

    千次阅读 2018-05-22 22:36:23
    上一节讲到如何对索引进行增删改查操作,但是都是针对于单个的来说,这节课就开始介绍如何批量的创建、修改、删除索引。废话不多说,我们直接看具体代码。1.批量创建索引/** * 批量添加索引 * @throws IOException *...
  • Java使用SQLServerBulkCopy实现数据库批量操作
  • Java之JDBC-批量操作

    千次阅读 2018-04-10 20:08:51
    1.增加插入1000条数据,查看各种方法所需要的时间:*普通方式... import java.sql.*; /** * @Author: cxx * @Date: 2018/4/10 18:22 */ public class JdbcTest { public static void main(String[] args) { ...
  • java多线程之批量操作

    千次阅读 2016-04-18 15:30:24
    第一次写博客,工作... 最直观的效果就是大大减少了操作时间。 1.首先建立测试实体类 package com.ncq.entity; import java.io.Serializable; public class Student implements Serializable{ private static fi
  • Java中的批量操作实现

    千次阅读 2017-09-11 23:13:16
    import java.util.ArrayList; import java.util.List;/** * Created by John on 2017/9/11. */ public class Test { public static void main(String[] args) { List&amp;amp;amp;lt;String&amp;...
  • Java批量反编译工具Jad

    2013-04-12 11:22:50
    Java批量反编译工具Jad 批量反编译目录下全部classes文件 一键化操作,简单容易。
  • ElasticSearch在Java中实现批量操作

    万次阅读 2019-04-16 16:16:53
    ElasticSearch在Java中实现批量操作 适用范围ElasticSearch6.x 如果是ElasticSearch7或以上版本情转到如下链接 REST高级客户端-DocumentApi:https://blog.csdn.net/u014646662/article/details/96473156 REST...
  • java操作Oracle批量入库

    2019-04-23 01:51:21
    NULL 博文链接:https://bijian1013.iteye.com/blog/2262414
  • Java 批量上传文件实例、jar包、JSP
  • import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; ... public static void main(String[] args) {//批量录入数据 String url = "jdbc:mysql://
  • java之poi操作excel-批量导入导出

    万次阅读 多人点赞 2016-10-23 16:52:05
    上一篇博文介绍了poi操作excel的基本读写操作后,接下来,介绍一下在项目中的实际用途:批量导入、批量导出功能。因为重点知识介绍批量导入导出excel功能,故而项目整体的搭建后台用jdbc与struts2,前端页面用jquery...
  • 片文章介绍了一个Java批量添加数据,多个字段同时添加多条数据具体实例,面向的是Oracle数据库,需要的朋友可以参考下
  • java 开发中Poi操作excel批量导入导出项目需要的jar包
  • java操作Excel实现企业级批量处理代码
  • Java8集合类库的批量数据操作

    千次阅读 2016-02-29 23:45:26
    第三章:Java集合类库的批量数据操作 引入批量数据操作的目的是应用lambda函数来实现包含并行操作在内的多种数据处理功能,而支持并行数据操作是其关键内容...给Java集合类库增加批量操作数据的支持。通常称这种批量数
  • 操作数据的时候,经常会用到修改数据的功能,本范例示范了如何批量更改数据。
  • * java8为并发哈希映射提供了批量操作数据操作,即使在其他线程同时操作映射时也可以安全的执行。 * 批量数据操作会遍历映射并对匹配的元素进行操作。在批量操作过程中,不需要冻结映射的一个快照。除非你恰好...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,021
精华内容 59,208
关键字:

java批量操作

java 订阅