Java 请注意文件名,以及如何打印我从电脑中选择的文件名?
这是一个简单的问题,如何打印出选定的文件名,谢谢Java 请注意文件名,以及如何打印我从电脑中选择的文件名?,java,bluej,Java,Bluej,这是一个简单的问题,如何打印出选定的文件名,谢谢 public class CSVMAX { public CSVRecord hottestInManyDays() { //select many csv files from my computer DirectoryResource dr = new DirectoryResource(); CSVRecord largestSoFar = null; //read every row and implement the me
public class CSVMAX {
public CSVRecord hottestInManyDays() {
//select many csv files from my computer
DirectoryResource dr = new DirectoryResource();
CSVRecord largestSoFar = null;
//read every row and implement the method we just define
for(File f : dr.selectedFiles()) {
FileResource fr = new FileResource(f);
CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
if (largestSoFar == null) {
largestSoFar = currentRow;
}
else {
double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));
double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));
//Check if currentRow’s temperature > largestSoFar’s
if (currentTemp > largestTemp) {
//If so update largestSoFar to currentRow
largestSoFar = currentRow;
}
}
}
return largestSoFar;
}
在这里,我想打印出文件名,但我不知道怎么做
public void testHottestInManyDay () {
CSVRecord largest = hottestInManyDays();
System.out.println("hottest temperature on that day was in file " + ***FILENAME*** + largest.get("TemperatureF") +
" at " + largest.get("TimeEST"));
}
}
参考(文件f:dr.selectedFiles())的行
f
是一个[]。它有一个方法[来自文档]
返回此抽象路径名的路径名字符串。这只是
getPath()方法返回的字符串
因此,在循环的第一行中,您可以放置System.out.println(f.toString())
以打印出文件路径
希望这有助于澄清故事的一部分
现在,为了更新这个字符串,我看到您在
testHottestInManyDay()
中使用了一个名为max
的对象。您应该在此对象中添加文件路径字符串,并将其设置在else
块中。参考(文件f:dr.selectedFiles())的行。
f
是一个[]。它有一个方法[来自文档]
返回此抽象路径名的路径名字符串。这只是
getPath()方法返回的字符串
因此,在循环的第一行中,您可以放置System.out.println(f.toString())
以打印出文件路径
希望这有助于澄清故事的一部分
现在,为了更新这个字符串,我看到您在
testHottestInManyDay()
中使用了一个名为max
的对象。您应该在此对象中添加一个文件路径字符串,并将其设置在else
块中。最终,似乎hotestinmanydays()
将需要返回此信息
CSVRecord是否有此属性?
大概是这样的:
CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
如果没有,是否可以添加这样的属性?
可能CSVRecord
没有该属性。但它可以被添加吗
private String _fileName;
public void setFileName(String fileName) {
this._fileName = fileName;
}
public String getFileName() {
return this._fileName;
}
如果没有,能否为这两条信息创建包装类?
如果您无法修改CSVRecord
,并且它没有放置所需信息的位置,请将其包装到一个有位置的类中。像这样简单的事情:
class CSVWrapper {
private CSVRecord _csvRecord;
private String _fileName;
// getters and setters for the above
// maybe also a constructor? make them final? your call
}
然后从hotestinmanydays()
返回该值,而不是CSVRecord
。大概是这样的:
CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
当然,根据需要更改方法签名和返回值
无论如何,一旦它位于
hottestInManyDays()
的返回值上,您就可以在使用以下内容的方法中使用它:
CSVWrapper largest = hottestInManyDays();
System.out.println("hottest temperature on that day was in file " + largest.getFileName() + largest.getCSVRecord().get("TemperatureF") +
" at " + largest.getCSVRecord().get("TimeEST"));
(注意:如果最末端的位不符合德米特定律,那么可以根据需要扩展包装器以包含传递操作。甚至可以让它与CSVRecord共享一个公共接口,以便在系统中其他地方需要时,可以将其用作替换。),似乎
hotestinmanydays()
需要返回此信息
CSVRecord是否有此属性?
大概是这样的:
CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
如果没有,是否可以添加这样的属性?
可能CSVRecord
没有该属性。但它可以被添加吗
private String _fileName;
public void setFileName(String fileName) {
this._fileName = fileName;
}
public String getFileName() {
return this._fileName;
}
如果没有,能否为这两条信息创建包装类?
如果您无法修改CSVRecord
,并且它没有放置所需信息的位置,请将其包装到一个有位置的类中。像这样简单的事情:
class CSVWrapper {
private CSVRecord _csvRecord;
private String _fileName;
// getters and setters for the above
// maybe also a constructor? make them final? your call
}
然后从hotestinmanydays()
返回该值,而不是CSVRecord
。大概是这样的:
CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
当然,根据需要更改方法签名和返回值
无论如何,一旦它位于
hottestInManyDays()
的返回值上,您就可以在使用以下内容的方法中使用它:
CSVWrapper largest = hottestInManyDays();
System.out.println("hottest temperature on that day was in file " + largest.getFileName() + largest.getCSVRecord().get("TemperatureF") +
" at " + largest.getCSVRecord().get("TimeEST"));
(注意:如果最末端的位不符合德米特定律,则可以根据需要扩展包装器以包括直通操作。甚至可以让它与
CSVRecord
共享一个公共接口,以便在系统中其他地方需要时,可以将其用作替代品。)必须同时返回CSVRecord和文件。要么是在新组建的班级里。
由于CSVRecord可以转换为映射,请使用新的列名(此处为“文件名”)将文件名添加到映射中
公共地图hottestInManyDays(){
//从我的计算机中选择多个csv文件
DirectoryResource dr=新的DirectoryResource();
CSVRecord largestSoFar=null;
文件fileoflargestofar=null;
//阅读每一行并实现我们刚刚定义的方法
对于(文件f:dr.selectedFiles()){
FileResource fr=新的FileResource(f);
CSVRecord currentRow=hottestHourInFile(fr.getCSVParser());
if(最大值==null){
最大值=当前行;
fileoflargestofar=f;
}
否则{
double currentTemp=double.parseDouble(currentRow.get(“TemperatureF”));
double largestemp=double.parseDouble(largestSoFar.get(“temperatureef”);
//检查当前行的温度是否>最大值
如果(当前温度>最大温度){
//如果是,则将largestSoFar更新为currentRow
最大值=当前行;
fileoflargestofar=f;
}
}
}
Map Map=newhashmap(largestSoFar.toMap());
put(“FILENAME”,fileoflargestofar.getPath());
返回图;
}
映射最大值=hotestinmanydays();
System.out.println(“那天最热的温度在文件中”
+最大的.get(“文件名”)+最大的.get(“温度因子”)+
“在”+最大的。得到(“时间”);
必须同时返回CSVRecord和文件。要么是在新组建的班级里。
由于CSVRecord可以转换为映射,请使用新的列名(此处为“FILEN”)将文件名添加到映射中