`

java 获取文件夹目录下的子目录或子目录下的文件

    博客分类:
  • java
阅读更多
package com.xinlong.test;
import java.io.File;
import java.io.FileFilter;
import java.util.Calendar;
import java.util.Date;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class ExcelToPdf {
private String path;
    public static boolean runFlag=false;
    public ExcelToPdf(String path)
    {
    this.path=path;
    }
//原始
public void saveExcelAsPdf1(String filePath,String outFile){
    ComThread.InitSTA();
    ActiveXComponent actcom=new ActiveXComponent("Excel.Application");
    try{
     System.out.println((new Date()).toString()+"  start convert from : "+filePath+" to "+outFile);
     actcom.setProperty("Visible", new Variant(false));
     Dispatch excels=actcom.getProperty("Workbooks").toDispatch();
           Dispatch excel = Dispatch.invoke(excels,"Open",Dispatch.Method,
                            new Object[]{filePath,new Variant(false),new Variant(false)},
                            new int[9] ).toDispatch();
           Dispatch.invoke(excel,"SaveAs",Dispatch.Method,new Object[]{outFile,new Variant(57), new Variant(false),
     new Variant(57), new Variant(57),new Variant(false), new Variant(true),new Variant(57), new Variant(false),
     new Variant(true), new Variant(false) },new int[1]);
           Dispatch.call(excel, "Close",new Variant(false));
           if(actcom!=null){
      actcom.invoke("Quit",new Variant[]{});
         actcom=null;
          }
           ComThread.Release();
           File temp=new File(filePath);
           //temp.renameTo(new File(filePath+"."+getDateStr()));
           temp.renameTo(new File(filePath));
           temp=new File(filePath);
        //   temp.deleteOnExit(); //自动删除
           temp=null;
           System.out.println((new Date()).toString()+"  convert ok : "+filePath+" to "+outFile);
    }catch(Exception es){
           es.printStackTrace();
       }
   
    }

/***
  * office 转换pdf
  * @param docfile 要转换的路径
  * @param toFile 转换后的路径
  * @param type 57-ppt,17-doc,32-xls
  */
public  void saveExcelAsPdf(String docfile, String toFile){ 
  ComThread.InitSTA();
ActiveXComponent app=null;
  Dispatch docs =null;
  int type=17;
  String typedoc=docfile.substring(docfile.lastIndexOf("."));

  if(typedoc.equals(".xls")||typedoc.equals(".xlsx")){
  type=32;
}else if(typedoc.equals(".ppt")||typedoc.equals(".pptx")){
type=57;
}
try { 

if(type==32)
{
app = new ActiveXComponent("PowerPoint.Application"); // 启动PowerPoint
   app.setProperty("Visible", new Variant(true));  //转ppt的时候把false改为了true
    docs = app.getProperty("Presentations").toDispatch();  //ppt
}else if(type==57)
{
           app = new ActiveXComponent("Excel.Application"); // 启动Excel 
           app.setProperty("Visible", new Variant(false)); 
            docs = app.getProperty("Workbooks").toDispatch();  //excel
}else if(type==17)
{
          app = new ActiveXComponent("Word.Application"); // 启动word 
          app.setProperty("Visible", new Variant(false)); 
           docs = app.getProperty("Documents").toDispatch();  //word
}
            Dispatch doc = Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[] {
            docfile, new Variant(false),new Variant(true) }, new int[1]).toDispatch(); 
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { 
                    toFile, new Variant(type) }, new int[1]); 
            if(type!=32)
            {
       
          Variant f = new Variant(false); 
          Dispatch.call(doc, "Close", f);  //转ppt的时候把这两行代码去掉
            }

        } catch (Exception e) { 
            e.printStackTrace(); 
       
        } finally { 
            app.invoke("Quit", new Variant[] {}); 
            ComThread.Release();
         
  
        } 
    } 

public void listAllFile(){
    runFlag=true;
    String fileName="",appdex="";
    File temp=null;
    try{
  
     File [] list=new File(path).listFiles(new FileFilter(){
                public boolean accept(File pathname) {
                    boolean x = false;
               
             
              
               
                    if (pathname.getName().toLowerCase().endsWith(".doc")||pathname.getName().toLowerCase().endsWith(".xls")||pathname.getName().toLowerCase().endsWith(".ppt")) {
                    c+=1; System.out.println(pathname+"==="+c);
                    x = true;
                    }
                
                    return x;
                }
           });
     //System.out.println((new Date()).toString()+"  Total Convert File : "+list.length);
//     for(int i=0;i<list.length;i++){
//      fileName=list[i].getName().substring(0, list[i].getName().indexOf("."));
//      appdex=list[i].getName().substring(list[i].getName().indexOf("."));
//      temp=new File(path+fileName+".pdf");
//      if(temp.exists()){
//      temp.renameTo(new File(path+fileName+"-"+getDateStr()+".pdf"));
//      }
//     saveExcelAsPdf(path+fileName+appdex,path+fileName+".pdf");
//      System.out.println(path+fileName+appdex);
      runFlag=false;
//     }
    }catch(Exception ex){
     ex.printStackTrace();
    }
    runFlag=false;
}

public String getDateStr(){
    Calendar cl=Calendar.getInstance();
    cl.setTime(new Date());
    String str=cl.get(Calendar.YEAR)+""+(cl.get(Calendar.MONTH)+1)+""
    +cl.get(Calendar.DATE)+""+cl.get(Calendar.HOUR)+""+cl.get(Calendar.MINUTE)+""
    +cl.get(Calendar.SECOND);
    str="9月加班.xls";
    return str;
}
public void pp()
{
// ComThread.InitSTA();
//
// ActiveXComponent slideApp = new ActiveXComponent("PowerPoint.Application");
//
//     Dispatch presentations = slideApp.getProperty("Presentations").toDispatch();
//
//     Dispatch presentation = Dispatch.call(presentations, "Open", inputFile.getAbsolutePath(),
//             MsoTriState.msoTrue.getInteger(), // ReadOnly
//             MsoTriState.msoFalse.getInteger(), // Untitled The Untitled parameter is used to create a copy of the presentation.
//             MsoTriState.msoFalse.getInteger()  // WithWindow
//     ).toDispatch();

}


private long[] count = new long[] { 0, 0 };

private File file;
int c=0;
private long[] listFile(String path) {
file = new File(path);
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++) {
if (f[i].isDirectory()) {
count[0]++;
//System.out.println(f[i].getPath());
this.listFile(f[i].getPath());

this.path=f[i].getPath();
listAllFile();

} else {
count[1]++;
}
}
//System.out.println("shu="+c);
return count;
}

/**
* 得到指定路径下的文件和文件夹数量
*
* @param path
* 要查看的路径
* @return object[0]耗时(毫秒)<br>
* object[1]文件夹数量<br>
* object[2]文件数量
*/
public Object[] getFileCount(String path) {
long t = System.currentTimeMillis();

long[] count = this.listFile(path);
//System.out.println(path);
t = System.currentTimeMillis() - t;
Object[] o = new Object[] { Long.valueOf(t), Long.valueOf(count[0]),
Long.valueOf(count[1])};

return o;
}

public static void main(String[] args) {
ExcelToPdf l = new ExcelToPdf("");
Object[] count = l.getFileCount("E:\\肖秋峰");
System.out.println("用时:"+count[0]);
System.out.println("文件夹个数:"+count[1]);
System.out.println("共文件"+count[2]);
}
}


//public static void main(String[] args) {
//
// ExcelToPdf e = new ExcelToPdf("D:\\质量管理体系文件\\");
// //e.listAllFile();
//// e.saveExcelAsPdf("D:\\转换\\加班时间.xlsx","D:\\转换\\j.pdf");
//// System.out.println("222.111.docx".substring("222.111.docx".lastIndexOf(".")));
//
//}


//}
0
3
分享到:
评论

相关推荐

    java 打印目录下所有文件名称 包括文件夹下的子文件夹

    用java 打印目录下所有文件名称 包括子目录, 默认目录 "C:/" 打印完 目录列表 输出在 选择的根目录的 "path/TestResultList.txt" 文件夹里。

    Java获取文件夹大小、文件大小,文件个数

    要获取文件夹大小,需要使用递归方法,遍历文件夹下的所有文件和子文件夹,计算其大小。下面是一个示例代码: ```java public long getFileSize(File f) throws Exception { long size = 0; File flist[] = f....

    Java 遍历文件夹内文件

    例如,你可以使用`listFiles()`方法来获取目录下的所有文件和子目录,它会返回一个`File`对象数组。但要注意,这个方法不包括隐藏文件。 ```java File directory = new File("C:\\example\\folder"); File[] files ...

    java删除指定文件夹下文件

    在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...

    java移动文件夹下所有文件

    这段代码首先检查源文件夹是否存在且为目录,然后获取其下所有文件或子文件夹。对于每个文件,如果是文件夹,就递归调用`moveFiles()`方法;如果是文件,就使用Java NIO的`Files.move()`方法来移动文件,此方法会...

    java获取所有文件夹及子文件夹java文件的总行数

    获取某个路径下的 所有文件夹和子文件夹 java后缀的文件的总行数 扩展名可随意改

    遍历目录下所有的文件_遍历文件夹文件_java遍历目录下所有文件_

    在Java编程语言中,遍历一个目录下的所有文件和子目录是一项常见的任务,尤其是在处理文件系统操作时。这里我们将深入探讨如何使用Java API来实现这一功能,并解释相关的知识点。 首先,Java提供了`java.io.File`类...

    获取文件夹的子目录的文件名

    "获取文件夹的子目录的文件名"这个任务就是一个典型的文件系统操作,它涉及到读取和列举一个目录下所有子目录中的文件名。这个过程在不同的编程语言中实现方式可能会有所不同,但基本的思路是相似的。下面我们将详细...

    java中读取目录下指定的文件

    在Java编程语言中,读取目录下指定的文件是一项常见的任务,这主要涉及到文件I/O操作。Java提供了丰富的API来处理文件系统相关的操作,包括读取、创建、删除文件以及遍历目录等。这里我们将详细讲解如何在Java中实现...

    java统计文件夹大小

    在Java编程中,统计文件夹大小是一项...在统计文件夹大小时,我们可以利用这些工具来提高效率,同时满足特定需求,如过滤文件类型和处理子目录。这样的实现方式对于处理大规模的文件系统操作具有很好的性能和可扩展性。

    java创建和删除文件夹、文件

    在Java中,`java.io.File`类提供了创建和删除文件或目录的功能。下面将详细介绍如何利用这些功能实现文件和文件夹的基本操作。 #### 一、创建文件夹 创建文件夹是通过`File`类的`mkdir()`或`mkdirs()`方法实现的。...

    java中遍历某个目录下的所有文件及文件夹中的文件

    在Java开发中,经常会遇到需要遍历指定目录及其子目录下所有文件的情况。本文将详细介绍如何使用Java标准库中的`java.io.File`类来实现这一功能。我们将通过一个简单的递归函数来演示如何遍历目录、列出所有文件的...

    java实现一个目录下全部文件复制到另一目录

    // 获取源目录下的所有文件和子目录 ``` 遍历这个数组,对每个`File`对象进行判断,看它是文件还是目录。如果是文件,我们就进行复制操作;如果是目录,我们可以递归调用此方法继续复制子目录。 在Java中,我们...

    Java获取文件或文件夹信息

    例如,如果你需要列出指定目录下的所有文件和子目录,可以使用`list()`或`listFiles()`方法: ```java File directory = new File("/path/to/directory"); String[] files = directory.list(); // 列出文件名 File...

    Java实现读取文件夹下(包括子目录)所有文件的文件名

    这个`FileList`类提供了一个方便的方法,可以轻松集成到任何Java项目中,以获取特定文件夹及其子目录下的所有文件名,并将这些名称保存到一个文件中。通过调用`new FileList("目录路径", "列表文件路径")`并随后调用...

    java压缩文件以及文件夹

    - 如果要压缩的是一个目录,需要遍历目录下的所有文件和子目录,对每个子项重复上述步骤。 4. **关闭流**: - 在所有文件和目录都添加完成后,记得关闭`ZipOutputStream`,这将完成ZIP文件的写入过程。 5. **...

    java生成所有文件包括子文件夹下文件的路径列表

    在Java编程中,生成一个文件或目录及其子文件夹下所有文件的路径列表是一项常见的任务。这在处理大量文件或需要遍历整个文件系统时非常有用。以下将详细讲解如何实现这一功能,并提供相关的源码示例。 首先,我们...

    Java实现实时监控目录下文件变化的方法

    Java实现实时监控目录下文件变化的方法 Java实现实时监控目录下文件变化的方法是指通过Java语言来实现实时监控目录下文件的变化情况,包括文件的创建、删除、修改等操作。这种方法可以应用于各种场景,例如文件系统...

Global site tag (gtag.js) - Google Analytics