解决方案 »

  1.   

    页面js,定时去请求一个action,防止sesson超时。
      

  2.   


    这个方法不错,进度条有用什么技术做呢?ajax?
      

  3.   


    这个方法不错,进度条有用什么技术做呢?ajax?是的,可以用jQuery进度条插件。http://www.cnblogs.com/lhb25/archive/2012/10/24/jquery-loading-animation-and-progress-bar-plugins.html
      

  4.   


    这个方法不错,进度条有用什么技术做呢?ajax?是的,可以用jQuery进度条插件。http://www.cnblogs.com/lhb25/archive/2012/10/24/jquery-loading-animation-and-progress-bar-plugins.htmlIO任务另开线程?怎么做啊
      

  5.   

    Thread每来一个文件开一个线程后台做,线程里面放一个isfinshed flag,程序判断Thread是否执行完毕
      

  6.   

     
    因为我有action在跑,我就不明白怎么在开线程?请问有例子吗?
      

  7.   

    可以用ExecutorService 这个类,下面是一个用线程池时候下计算文件夹大小的例子,可以参考下package cq.price;import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.TimeoutException;public class ConcurrentTotalFileSize { public static void main(String[] args) throws InterruptedException,
    ExecutionException, TimeoutException {
    long start = System.nanoTime();
    System.out.println("Total Size: "
    + new ConcurrentTotalFileSize()
    .getTotalFileSizeOfFilesInDir(new File("F:\\资料")));
    System.out.println("Time: " + (System.nanoTime() - start)
    / 1.0e9);
    } public long getTotalFileSizeOfFilesInDir(final File file)
    throws InterruptedException, ExecutionException, TimeoutException {
    if (file.isFile()) {
    return file.length();
    }
    ExecutorService service = Executors.newFixedThreadPool(4);
    long total;
    try {
    total = 0;
    List<File> directories = new ArrayList<File>();
    directories.add(file);
    while (!directories.isEmpty()) {
    final List<Future<SubDirectoriesAndSize>> partialResults = new ArrayList<Future<SubDirectoriesAndSize>>();
    for (final File direcotry : directories) {
    partialResults.add(service
    .submit(new Callable<SubDirectoriesAndSize>() {
    @Override
    public SubDirectoriesAndSize call()
    throws Exception {
    return getTotalAndSubDirectories(direcotry);
    }
    }));
    }
    directories.clear(); for (Future<SubDirectoriesAndSize> future : partialResults) {
    SubDirectoriesAndSize directoriesAndSize = future.get(100,
    TimeUnit.SECONDS);
    if (directoriesAndSize == null) {
    continue;
    }
    total += directoriesAndSize.size;
    directories.addAll(directoriesAndSize.subDirectories);
    } }
    } catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException(e.getMessage(), e);
    } finally {
    service.shutdown();
    }
    return total;
    } public SubDirectoriesAndSize getTotalAndSubDirectories(final File file) {
    long total = 0;
    List<File> subDirectories = new ArrayList<File>();
    if (file.isDirectory()) {
    File[] children = file.listFiles();
    if (children != null) {
    for (File child : children) {
    if (child.isFile()) {
    total += child.length();
    } else {
    subDirectories.add(child);
    }
    }
    }
    }
    return new SubDirectoriesAndSize(total, subDirectories);
    }
    }/**
     * 记录当初文件夹的下文件的大小以及子文件夹
     * 
     * @author Administrator
     *
     */
    class SubDirectoriesAndSize {
    final public long size;
    final public List<File> subDirectories; public SubDirectoriesAndSize(long size, List<File> subDirectories) {
    super();
    this.size = size;
    this.subDirectories = subDirectories;
    };
    }
      

  8.   


    请注意你的初衷:
    java I/O 一次批量插入保存文件,导致超时问题?一楼的回答包括两个步骤,步骤一其实已经解决了你的超时问题,至于步骤二,那属于优化的范畴——这个看你的需求,有没有必要做这样的优化?如果有这需求,再参考下进度条的解决方案来搞定吧!
      

  9.   


    请注意你的初衷:
    java I/O 一次批量插入保存文件,导致超时问题?一楼的回答包括两个步骤,步骤一其实已经解决了你的超时问题,至于步骤二,那属于优化的范畴——这个看你的需求,有没有必要做这样的优化?如果有这需求,再参考下进度条的解决方案来搞定吧!
    进度条只是用户体验,“IO任务另开线程”这个怎么做才是关键。