Java IO流练习题:统计文件数量、读取文件内容、复制文件
使用Java IO流完成以下练习题
题目一:统计文件夹中每种文件的个数并打印
要求: 统计一个文件夹中每种文件的个数并打印。
打印格式如下:
txt:3个
doc:4个
jpg:6个
…
示例代码:
import java.io.File;
import java.io.FilenameFilter;
public class FileCount {
public static void main(String[] args) {
File folder = new File("path/to/folder"); // 替换为实际文件夹路径
if (!folder.isDirectory()) {
System.out.println("不是一个文件夹!");
return;
}
File[] files = folder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile();
}
});
if (files == null || files.length == 0) {
System.out.println("文件夹为空!");
return;
}
int[] counts = new int[files.length];
String[] extensions = new String[files.length];
for (int i = 0; i < files.length; i++) {
String extension = getExtension(files[i].getName());
extensions[i] = extension;
counts[i] = 1;
for (int j = i + 1; j < files.length; j++) {
if (extensions[j].equals(extension)) {
counts[i]++;
counts[j] = -1;
}
}
}
for (int i = 0; i < extensions.length; i++) {
if (counts[i] > 0) {
System.out.println(extensions[i] + ": " + counts[i] + "个");
}
}
}
private static String getExtension(String filename) {
int dotIndex = filename.lastIndexOf('.');
if (dotIndex < 0) {
return "";
}
return filename.substring(dotIndex + 1);
}
}
题目二:在计算机的根目录下创建一个文件,并写入内容
要求: 在你计算机的一个盘(比如D盘)根目录下创建一个文件,名字叫做'file01.txt'。保存以下内容(要求是单字节字符,比如字母或者数字)
file01.txt
1 abcdef123456
要求:
- 使用字节输入流一次读取一个字节的方法将'file01.txt'的文件读取并打印
- 使用字节输入流一次读取多个字节的方法将'file01.txt'的文件读取并打印
示例代码:
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("path/to/file01.txt")) {
// 一次读取一个字节
int b;
while ((b = fis.read()) != -1) {
System.out.print((char) b);
}
System.out.println();
// 一次读取多个字节
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
题目三:将一个文件夹中的图片文件复制到另一个文件夹
要求: 在D盘中创建两个文件夹,'img1','img2'。在'img1'中放置一个图片文件,将'img1'中的图片文件使用字节流复制到'img2'中。
示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyImage {
public static void main(String[] args) {
File srcFolder = new File("D:/img1"); // 替换为实际文件夹路径
File destFolder = new File("D:/img2"); // 替换为实际文件夹路径
if (!srcFolder.isDirectory() || !destFolder.isDirectory()) {
System.out.println("不是一个文件夹!");
return;
}
File[] files = srcFolder.listFiles();
if (files == null || files.length == 0) {
System.out.println("文件夹为空!");
return;
}
for (File file : files) {
if (file.isFile()) {
try (FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(destFolder, file.getName()))) {
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
题目四:学习字符流相关方法
要求: 查阅JDK文档,学习字符流相关方法内容。
字符流相关方法包括:
- FileReader / FileWriter:用于读写字符文件,支持指定字符集。
- BufferedReader / BufferedWriter:用于读写字符文件,提供缓冲功能,可以一次读写一行。
- InputStreamReader / OutputStreamWriter:用于将字节流转换为字符流,支持指定字符集。
- PrintWriter:用于打印格式化的输出。
- CharArrayReader / CharArrayWriter:用于在内存中读写字符数据。
- StringReader / StringWriter:用于在内存中读写字符串数据。
通过完成以上练习题,你将掌握以下Java IO流方面的知识:
- 文件操作的基本方法,包括创建、读取、写入、复制等。
- 字节流和字符流的区别和使用场景。
- 缓冲流的使用,提升读写效率。
- 字符集的概念和设置。
希望这些练习题能够帮助你更好地理解和应用Java IO流!
原文地址: https://www.cveoy.top/t/topic/oghU 著作权归作者所有。请勿转载和采集!