使用 for 循环保存多个 .txt 文件
Saving multiple .txt Files with a for Loop
我的 .txt 文件的保存循环有问题。它总是将最后一个文件保存两次(如果我输入 2 for the for loop
)
目前我尝试使用 int writingLength = fc.getSelectedFiles().length;
,结果是
总共没有储蓄选项。感谢任何可以帮助我解决问题的想法,因为我是 Java 的新手。
这里截取了整个代码以更好地概述我的代码:
private void prepareTDDExcelDoc() {
fc.setMultiSelectionEnabled(true);
fc.resetChoosableFileFilters();
fc.setAcceptAllFileFilterUsed(false);
final FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel document (*.csv)", "csv");
fc.setFileFilter(filter);
int writingLength = fc.getSelectedFiles().length;
for(int i=0;i<writingLength;i++) {
final String suggestedFilename = reportName.replaceAll("\W+", "_") + ".xlsx";
fc.setSelectedFile(new File(suggestedFilename));
final int returnVal = fc.showSaveDialog(frmCognosTddBuilder);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
enableUserInteraction(false);
outputFilename = fc.getSelectedFile().getCanonicalPath();
final ExportedOutputInterface exportedExcelOutput = new ExcelOutput(this, outputFilename);
progressMonitor = new ProgressMonitor(getFrame(), "Builing TDD", "", 0, 100);
task = new ReportDataExtracter(this, exportedExcelOutput);
task.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(final PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
final int progress = (Integer) evt.getNewValue();
progressMonitor.setProgress(progress);
final String message = String.format("Completed %d%%.\n", progress);
progressMonitor.setNote(message);
if (progressMonitor.isCanceled() || task.isDone()) {
if (progressMonitor.isCanceled()) {
task.cancel(true);
} else {
progressMonitor.close();
}
}
}
}
});
task.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我看到这个“reportName”变量,它似乎没有在此函数中声明,所以我想它是一个实例变量。在任何情况下,您都在对该值进行小的转换并将其设置为列表所有条目的输出文件名。我想输出文件只会包含列表中的最后一个文件。
在调试器中执行这样的代码非常有用,因此您可以单步执行它并观察变量的值。由于您的代码正在创建 UI 组件,因此您可能需要使用两个显示器。几年前我不得不调试 UI 代码。
我的 .txt 文件的保存循环有问题。它总是将最后一个文件保存两次(如果我输入 2 for the for loop
)
目前我尝试使用 int writingLength = fc.getSelectedFiles().length;
,结果是
总共没有储蓄选项。感谢任何可以帮助我解决问题的想法,因为我是 Java 的新手。
这里截取了整个代码以更好地概述我的代码:
private void prepareTDDExcelDoc() {
fc.setMultiSelectionEnabled(true);
fc.resetChoosableFileFilters();
fc.setAcceptAllFileFilterUsed(false);
final FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel document (*.csv)", "csv");
fc.setFileFilter(filter);
int writingLength = fc.getSelectedFiles().length;
for(int i=0;i<writingLength;i++) {
final String suggestedFilename = reportName.replaceAll("\W+", "_") + ".xlsx";
fc.setSelectedFile(new File(suggestedFilename));
final int returnVal = fc.showSaveDialog(frmCognosTddBuilder);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
enableUserInteraction(false);
outputFilename = fc.getSelectedFile().getCanonicalPath();
final ExportedOutputInterface exportedExcelOutput = new ExcelOutput(this, outputFilename);
progressMonitor = new ProgressMonitor(getFrame(), "Builing TDD", "", 0, 100);
task = new ReportDataExtracter(this, exportedExcelOutput);
task.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(final PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
final int progress = (Integer) evt.getNewValue();
progressMonitor.setProgress(progress);
final String message = String.format("Completed %d%%.\n", progress);
progressMonitor.setNote(message);
if (progressMonitor.isCanceled() || task.isDone()) {
if (progressMonitor.isCanceled()) {
task.cancel(true);
} else {
progressMonitor.close();
}
}
}
}
});
task.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我看到这个“reportName”变量,它似乎没有在此函数中声明,所以我想它是一个实例变量。在任何情况下,您都在对该值进行小的转换并将其设置为列表所有条目的输出文件名。我想输出文件只会包含列表中的最后一个文件。
在调试器中执行这样的代码非常有用,因此您可以单步执行它并观察变量的值。由于您的代码正在创建 UI 组件,因此您可能需要使用两个显示器。几年前我不得不调试 UI 代码。