如何用java遍历整个目录输出文件名和文件大小
时间: 2023-02-12 14:23:16 浏览: 420
使用Java可以使用File类的listFiles()方法遍历整个目录,然后使用File类的getName()和length()方法输出文件名和文件大小。
例如:
```
File folder = new File("path/to/folder");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println("File name: " + file.getName() + " File size: " + file.length());
}
}
```
上面的代码将遍历指定目录下的所有文件,并输出文件名和文件大小。
相关问题
java查找指定目录下的所有.java文件,并输出文件名和文件大小,然后将所有的.java文件(原来为gbk编码),转换为utf-8编码
### 回答1:
以下是Java代码,可以实现查找指定目录下的所有.java文件,并输出文件名和文件大小,然后将所有的.java文件(原来为gbk编码),转换为utf-8编码:
```java
import java.io.*;
public class FindJavaFiles {
public static void main(String[] args) {
String directoryPath = "指定目录路径";
File directory = new File(directoryPath);
if (!directory.isDirectory()) {
System.out.println("不是一个目录!");
return;
}
File[] files = directory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
});
for (File file : files) {
System.out.println(file.getName() + " " + file.length());
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "gbk");
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
isr.close();
fis.close();
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(sb.toString());
bw.close();
osw.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
请将“指定目录路径”替换为实际的目录路径。
### 回答2:
可以使用Java的File类和编码转换库来完成这个任务。具体步骤如下:
1. 创建一个方法,接收一个指定目录的路径作为参数。使用File类的listFiles()方法获取该目录下的所有文件和文件夹。
2. 遍历上一步返回的文件数组,对于每个文件,判断是否是以".java"结尾的文件。可以使用FilenameFilter类来实现这个功能。
3. 如果是以".java"结尾的文件,获取文件名和文件大小,并输出到控制台。
4. 创建一个新的以UTF-8编码的空文件。
5. 使用IO流将原来的文件从GBK编码转换为UTF-8编码,并将内容写入新文件中。可以使用InputStreamReader和OutputStreamWriter来完成这个转换过程。
下面是一个可能的实现代码示例:
```java
import java.io.*;
public class Main {
public static void main(String[] args) {
String directoryPath = "指定目录的路径";
convertJavaFilesToUtf8(directoryPath);
}
public static void convertJavaFilesToUtf8(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".java");
}
});
for (File file : files) {
String fileName = file.getName();
long fileSize = file.length();
System.out.println("文件名:" + fileName + ",文件大小:" + fileSize);
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getAbsolutePath() + ".utf8"), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
注意:上述代码仅实现了将指定目录下的所有Java文件从GBK编码转换为UTF-8编码,并输出文件名和文件大小。如需更多功能,可以根据实际需求进行修改和扩展。
获取文件指定目录下的所有xls结尾文件同时大小小于200K的文件,输出这写文件的文件名和文件数量
你可以使用Java的文件操作来获取指定目录下所有以`.xls`结尾且大小小于200K的文件。以下是一个示例代码:
```java
import java.io.File;
public class Main {
public static void main(String[] args) {
String directoryPath = "/path/to/directory"; // 指定目录的路径
File directory = new File(directoryPath);
File[] files = directory.listFiles((dir, name) -> name.endsWith(".xls") && new File(dir, name).length() < 200 * 1024);
int count = files != null ? files.length : 0;
System.out.println("符合条件的文件数量:" + count);
if (count > 0) {
System.out.println("符合条件的文件名:");
for (File file : files) {
System.out.println(file.getName());
}
}
}
}
```
在这段代码中,你需要将`/path/to/directory`替换为你想要查询的目录的实际路径。然后,使用`File`类创建一个代表指定目录的对象。调用`listFiles`方法,并传入一个`FileFilter`对象作为参数,该对象根据文件名以`.xls`结尾并且文件大小小于200K来过滤文件。返回的数组`files`包含符合条件的文件。
接着,通过判断`files`数组是否为空来确定符合条件的文件数量。如果数量大于0,则使用循环遍历并输出符合条件的文件名。
请注意,代码中的路径分隔符使用的是Unix风格的斜杠`/`,如果在Windows系统上运行,需要将路径分隔符替换为反斜杠`\`。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)