原文:小陈想上岸
https://blog.csdn.net/qq_43518645/article/details/104462624
复习io流看到的很好的练习题
题目一:
/**
* * Java IO流经典练习题
* * -------------------------------------------------
* * 题目一:
* * 在电脑D盘下创建一个文件为HelloWorld.txt文件,
* * 判断他是文件还是目录,
* * 再创建一个目录IOTest,
* * 之后将HelloWorld.txt移动到IOTest目录下去;
* * 之后遍历IOTest这个目录下的文件
* * --------------------------------------------------
* * 分析:
* * 创建一个文件:File的creatNewFile()
* * 判断是否为文件 isFile()
* * 判断是否为目录 isDirectory()
* * 创建目录 mkdirs()
* * 移动文件 renameTo()
* * 遍历目录下文件 listFiles()方法获得存放文件的数组,foreach遍历
* * 采用Lamada表达式(java8之后支持)
* @author xing
* @create 2021-03-02 15:56
*/
public class TestIo {
public static void main(String[] args) {
//创建File类
File file = new File("D:/HelloWorld.txt");
//public boolean creatNewFile() 创建文件。若文件存在,则不创建,返回false
try {
if(file.createNewFile()){
System.out.println("文件创建成功");
}else {
System.out.println("文件创建失败,文件已经存在");
}
} catch (IOException e) {
e.printStackTrace();
}
//判断是否为文件
if(file.isFile()){
System.out.println("是文件");
}
//判断是否为目录
if(file.isDirectory()){
System.out.println("是目录");
}
//创建目录IOTest
File file1 = new File("d:/IOTest");
file1.mkdirs();
//之后将HelloWorld.txt移动到IOTest目录下去
//这里分析一下:renameTo方法 file.renameTo(File file)
//需要一个File类型的参数,这道题来说,移动的结果:
//d:/TOTest/HelloWorld.txt 会出现这个结果,因此我们需要拿到HelloWorld.txt
//千万不要去手动输入HelloWorld.txt,这道题我们知道是这个名字,如果换到题,我们只
//知道要移动文件的位置和目标位置,手动输入岂不是懵逼了。(啰嗦一点)
File file2 = new File(file1.getPath() + "/" + file.getName());
if(file.renameTo(file2)){
System.out.println("移动成功");
}else {
System.out.println("移动失败");
}
//之后遍历IOTest这个目录下的文件
//下面的方法只是用一下java8支持的Lamada表达式
File[] files = file1.listFiles();
List<File> files1 = Arrays.asList(files);
files1.forEach(a->{
System.out.println("文件路径:"+a.getPath());
});
}
}
题目二:
/**
* * Java IO流经典练习题
* * -------------------------------------------------
* * 题目一:
* * 在电脑D盘下创建一个文件为HelloWorld.txt文件,
* * 判断他是文件还是目录,
* * 再创建一个目录IOTest,
* * 之后将HelloWorld.txt移动到IOTest目录下去;
* * 之后遍历IOTest这个目录下的文件
* * --------------------------------------------------
* * 分析:
* * 创建一个文件:File的creatNewFile()
* * 判断是否为文件 isFile()
* * 判断是否为目录 isDirectory()
* * 创建目录 mkdirs()
* * 移动文件 renameTo()
* * 遍历目录下文件 listFiles()方法获得存放文件的数组,foreach遍历
* * 采用Lamada表达式(java8之后支持)
* @author xing
* @create 2021-03-02 15:56
*/
public class TestIo {
public static void main(String[] args) {
//创建File类
File file = new File("D:/HelloWorld.txt");
//public boolean creatNewFile() 创建文件。若文件存在,则不创建,返回false
try {
if(file.createNewFile()){
System.out.println("文件创建成功");
}else {
System.out.println("文件创建失败,文件已经存在");
}
} catch (IOException e) {
e.printStackTrace();
}
//判断是否为文件
if(file.isFile()){
System.out.println("是文件");
}
//判断是否为目录
if(file.isDirectory()){
System.out.println("是目录");
}
//创建目录IOTest
File file1 = new File("d:/IOTest");
file1.mkdirs();
//之后将HelloWorld.txt移动到IOTest目录下去
//这里分析一下:renameTo方法 file.renameTo(File file)
//需要一个File类型的参数,这道题来说,移动的结果:
//d:/TOTest/HelloWorld.txt 会出现这个结果,因此我们需要拿到HelloWorld.txt
//千万不要去手动输入HelloWorld.txt,这道题我们知道是这个名字,如果换到题,我们只
//知道要移动文件的位置和目标位置,手动输入岂不是懵逼了。(啰嗦一点)
File file2 = new File(file1.getPath() + "/" + file.getName());
if(file.renameTo(file2)){
System.out.println("移动成功");
}else {
System.out.println("移动失败");
}
//之后遍历IOTest这个目录下的文件
//下面的方法只是用一下java8支持的Lamada表达式
File[] files = file1.listFiles();
List<File> files1 = Arrays.asList(files);
files1.forEach(a->{
System.out.println("文件路径:"+a.getPath());
});
}
}
题目三:
/**
* Java IO流经典练习题
* -------------------------------------------------
* 题目三:
* 递归实现列出当前工程下所有.java文件
* --------------------------------------------------
* 分析:
* 题目二是遍历所有文件,此题目是遍历.java文件
* 易得,只要我们筛选一下条件就行
* 可以对工具类进行修改(加入list集合的时候筛选一下)
* 也可以在main方法中进行筛选
* @author shkstart
* @create 2021-03-02 16:51
*/
public class TestIo2 {
public static void main(String[] args) {
List<File> files = Utils2.getAllFiles(".");
for (File file : files) {
if(file.toString().endsWith(".java")){
System.out.println(file);
}
}
}
}
class Utils2{
/**
* 获取文件夹下所有的文件
* @param filepath
* @return
*/
public static List getAllFiles(String filepath){
//创建目录的file类
File file = new File(filepath);
//用于存放文件和文件夹
ArrayList<File> files = new ArrayList<>();
//首先判断传入路径是否为文件和是否存在
if(file.exists()&&file.isDirectory()){
//这里用到递归
Result(file, files);
}else{
System.out.println("输入路径有问题!");
}
return files;
}
private static void Result(File file,List listFiles){
//获取所有该目录下的所有文件夹和文件的File数组
File[] files = file.listFiles();
for (File file1 : files) {
//存入集合中
if(file1.toString().endsWith(".java")){
listFiles.add(file1);
}
//判断是否为文件夹
if(file1.isDirectory()){
//是 则递归调用
Result(file1, listFiles);
}
}
}
}
大处着眼,小处着手。深深体会到了基础部分的重要性 一定要多敲啊。还有六道题,后面再一 一完成