我有一个sFile = Cells(ActiveCell.Row, ActiveCell.Column + 2).Value
If UCase$(Mid$(sFile, InStrRev(sFile, ".") + 1)) = "DOCX" Then
Select Case MsgBox("View before saving?", vbYesNoCancel Or vbQuestion, "Save or View?")
Case vbCancel: Exit Sub
Case vbYes:
With CreateObject("Word.Application")
.Visible = True
.Documents.Open sFile
.Activate
End With
Exit Sub
End Select
End If
文件,其中包含所有文件夹路径的列表。
如何获得该文件夹路径中存在的文件总数的总计数。
对于一条路,我可以这样做。
folderName.txt
但问题是我无法从new File("folder").listFiles().length.
文件中读取路径。
我正在尝试这个
folderName.txt
但是当我试图访问linesFile数组时,我得到了一个异常。
像File objFile = objPath.toFile();
try(BufferedReader in = new BufferedReader(
new FileReader(objFile))){
String line = in.readLine();
while(line != null){
String[] linesFile = line.split("\n");
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:。
我的问题是为什么我得到java.lang.ArrayIndexOutOfBoundsException? 我怎么能读取单个目录路径和其中的文件总数。有没有办法读取子目录中的文件总数。
folderName.txt有这样的结构。
E:/ folder1中
E:/文件夹2
答案 0 :(得分:2)
例外原因是:
readLine()方法从输入中读取整行但删除了 来自它的newLine字符。因此它无法拆分\ n
这是完全符合你想要的代码。
我有一个folderPath.txt
,其中包含一个像这样的目录列表。
D:\ 305
D:\ Deployment
D:\ HeapDumps
D:\ Program Files
d:\编程
此代码为您提供所需内容+您可以根据需要进行修改
public class Main {
public static void main(String args[]) throws IOException {
List<String> foldersPath = new ArrayList<String>();
File folderPathFile = new File("C:\\Users\\ankur\\Desktop\\folderPath.txt");
/**
* Read the folderPath.txt and get all the path and store it into
* foldersPath List
*/
BufferedReader reader = new BufferedReader(new FileReader(folderPathFile));
String line = reader.readLine();
while(line != null){
foldersPath.add(line);
line = reader.readLine();
}
reader.close();
/**
* Map the path(i.e Folder) to the total no of
* files present in that path (i.e Folder)
*/
Map<String, Integer> noOfFilesInFolder = new HashMap<String, Integer>();
for (String pathOfFolder:foldersPath){
File[] files2 = new File(pathOfFolder).listFiles();//get the arrays of files
int totalfilesCount = files2.length;//get total no of files present
noOfFilesInFolder.put(pathOfFolder,totalfilesCount);
}
System.out.println(noOfFilesInFolder);
}
}
输出:
{D:\Program Files=1, D:\HeapDumps=16, D:\Deployment=48, D:\305=4, D:\Programming=13}
编辑:这也计算子目录中存在的文件总数。
/**This counts the
* total number of files present inside the subdirectory too.
*/
Map<String, Integer> noOfFilesInFolder = new HashMap<String, Integer>();
for (String pathOfFolder:foldersPath){
int filesCount = 0;
File[] files2 = new File(pathOfFolder).listFiles();//get the arrays of files
for (File f2 : files2){
if (f2.isDirectory()){
filesCount += new File(f2.toString()).listFiles().length;
}
else{
filesCount++;
}
}
System.out.println(filesCount);
noOfFilesInFolder.put(pathOfFolder, filesCount);
}
System.out.println(noOfFilesInFolder);
}