java查找指定目录下的所有.java文件,并输出文件名和文件大小,然后将所有的.java文件(原来为gbk编码),转换为utf-8编码
时间: 2023-08-31 15:34:56 浏览: 157
### 回答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编码,并输出文件名和文件大小。如需更多功能,可以根据实际需求进行修改和扩展。
阅读全文