我已将此代码编码为将所有文件和文件夹放在excel中的以下路径 C:\ Users \ hmoorthy \ workspace 中。但是变量 i 造成了一些问题。我发现,用于查找文件的递归 displayDirectoryContents(file,i)是否为目录,是否具有旧的 i 值,这会导致excel覆盖。因此,总文件数没有进入excel。
输出 文件夹:C:\ Users \ hmoorthy \ workspace.metadata 0 文件:C:\ Users \ hmoorthy \ workspace.metadata.bak_0.log 1 文件:C:\ Users \ hmoorthy \ workspace.metadata.lock 2 文件:C:\ Users \ hmoorthy \ workspace.metadata.log 3 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.mylyn 4 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.mylyn.tasklistIndex 5 文件:C:\ Users \ hmoorthy \ workspace.metadata.mylyn.tasklistIndex \ segments_1 6 文件:C:\ Users \ hmoorthy \ workspace.metadata.mylyn.tasklistIndex \ write.lock 7 文件:C:\ Users \ hmoorthy \ workspace.metadata.mylyn.tasks.xml.zip 7 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.mylyn \ contexts 8 文件:C:\ Users \ hmoorthy \ workspace.metadata.mylyn \ repositories.xml.zip 10 文件:C:\ Users \ hmoorthy \ workspace.metadata.mylyn \ tasks.xml.zip 11 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.plugins 6 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services 7 文件夹:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services \ CompareExcel 8 文件:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services \ CompareExcel \ 1.artifact.sjo 9 文件:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services \ CompareExcel \ 1.command.sjo 10 文件:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services \ CompareExcel \ command.num 11 文件:C:\ Users \ hmoorthy \ workspace.metadata.plugins \ oracle.eclipse.tools.common.services \ CompareExcel \ project.num 12
您可以看到两次 i 打印11。因此,替换了excel中第11-1行的先前值。我要打印所有值。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class App2 {
private static String dest = "C:\\Users\\hmoorthy\\test.xls";
private static HSSFWorkbook myWorkBook = new HSSFWorkbook();
private static HSSFSheet mySheet = myWorkBook.createSheet();
public static void excelLog(String filename,String message,int rowNum) {
HSSFRow myRow = null;
HSSFCell myCell = null;
String excelData[][] = new String[1][2];
excelData[0][0] = filename;
excelData[0][1] = message;
myRow = mySheet.createRow(rowNum);
for (int cellNum = 0; cellNum < 2; cellNum++) {
myCell = myRow.createCell(cellNum);
myCell.setCellValue(excelData[0][cellNum]);
}
try {
FileOutputStream out = new FileOutputStream(dest);
myWorkBook.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
int i = 0;
File currentDir = new File("C:\\Users\\hmoorthy\\workspace");
displayDirectoryContents(currentDir,i);
}
public static void displayDirectoryContents(File dir,int i) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
//System.out.println("folder:" + file.getcanonicalPath());
//System.out.println("file "+i);
excelLog("Folder",file.getcanonicalPath(),i);
i=i+1;
displayDirectoryContents(file,i);
i=i+1;
} else {
//System.out.println("file:" + file.getcanonicalPath());
excelLog("File ",i);
i=i+1;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
谢谢;)