Я кодировал это, чтобы поместить все файлы и папки по следующему пути C: \ Users \ hmoorthy \ workspace в Excel. Но переменная i создает некоторые проблемы. Я обнаружил, что рекурсия displayDirectoryContents (file, i) , используемая для поиска файла, является каталогом или нет, имея старое значение i , которое вызывает перезапись в excel. Таким образом, общее количество файлов не попадает внутрь Excel.
OUTPUT папка: C: \ Users \ hmoorthy \ workspace.metadata 0 file: 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 \ сегменты_1 6 файл: C: \ Users \ hmoorthy \ workspace.metadata.mylyn.taskLфайл \ 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 file: 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. Итак, предыдущее значение в 11-1-й строке в excel заменяется. Я хочу напечатать все значения.
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 ",file.getCanonicalPath(),i);
i=i+1;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
СПАСИБО;)