广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

佛山Java io流编程练习题(二)

作者:admin01发布时间:2021-07-13分类:Java技术浏览:868


导读:一.练习的题目(一)在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOT...

一.练习的题目

(一)在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去;之后遍历IOTest这个目录下的文件:

package com.xykj.lesson1;  
  
import java.io.File;  
import java.io.IOException;  
  
  
public class Test1 {  
    /**  
     * 1. 在电脑D盘下创建一个文件为HelloWorld.txt文件,  
     * 判断他是文件还是目录,再创建一个目录IOTest,  
     * 之后将HelloWorld.txt移动到IOTest目录下去;  
     * 之后遍历IOTest这个目录下的文件  
     *   
     * 程序分析:  
     * 1、文件创建使用File的createNewFile()方法  
     * 2、判断是文件用isFile(),判断是目录用isDirectory  
     * 3、创建目录用:mkdirs()方法  
     * 4、移动文件用:renameTo  
     * 5、遍历目录用:list()方法获得存放文件的数组,foreach遍历的方法把文件打印出来  
     * */  
    public static void main(String[] args) {  
         //在电脑D盘下创建一个文件为HelloWorld.txt文件  
        File file=new File("D:","HelloWorld.txt");  
          
        //创建文件,返回一个布尔值  
        boolean isCreate;  
        try {  
            isCreate = file.createNewFile();  
            if (isCreate) {  
                System.out.println("创建文件成功!");  
            }else {  
                System.out.println("创建文件失败!文件已经存在");  
            }  
        } catch (IOException e) {  
            System.out.println("创建文件失败!");  
        }  
          
        // 判断他是文件还是目录,  
        if (file.isFile()) {  
            System.out.println("这是一个文件");  
        } else {  
            System.out.println("这是一个目录");  
        }  
          
        //再创建一个目录IOTest  
        File file2=new File("D:/IOTest");  
        file2.mkdirs();  
          
        //HelloWorld.txt移动到IOTest目录下去?失败?》  
        if (file.renameTo(file2)) {  
            System.out.println("文件移动成功!");  
        } else {  
            System.out.println("文件移动失败");  
        }  
          
        //遍历IOTest目录下的文件  
        String[] arr=file2.list();  
        for (String string : arr) {  
            System.out.println(string);  
        }  
    }  
}

//上面移动文件要指明文件路径和文件名

上面的file.renameTo(file2)改为:

file.renameTo(file2.getPath + "/" + file.getName());

就不会有错了。

(二) 递归实现输入任意目录,列出文件以及文件夹,效果看图

1.先建一个FileUtile工具类

package com.xykj.lesson2;  
  
import java.io.File;  
import java.util.ArrayList;  
import java.util.List;  
    /**  
     * 这是一个获取目录下所有文件夹内的所有文件的封装类  
     * 当然前提是你要传进来一个正确路径的文件夹  
     * */  
public class FileUtils {  
      
    //获取文件夹下所有的文件  
    public static List getAllFiles(String dir){  
          
        //创建一个集合存放遍历到的File  
        List< File >files=new ArrayList();  
          
        File file=new File(dir);  
        //文件夹必须存在                并且要是文件夹  
        if (file.exists()&&file.isDirectory()) {  
            //重点!    这里要本身一直遍历  
            longErgodic(file,files);//把遍历得到的东西存放在files里面  
        }  
        return files;  
    }  
      
    //重点理解,这是一个递归方法,会不断来回调用本身,但是所有获得的数据都会存放在集合files里面  
    private static void longErgodic(File file, List files) {  
          
        //.listFiles()方法的使用  
        //把文件夹的所有文件(包括文件和文件名)都放在一个文件类的数组里面   
        File[] fillArr=file.listFiles();  
          
        //如果是一个空的文件夹  
         if (fillArr==null) {  
             //后面的不执行,直接返回  
            return;  
        }  
           
        //如果文件夹有内容,遍历里面的所有文件(包括文件夹和文件),都添加到集合里面  
         for (File file2 : fillArr) {  
               
             //如果只是想要里面的文件或者文件夹或者某些固定格式的文件可以判断下再添加  
             files.add(file2);  
               
             //添加到集合后,在来判断是否是文件夹,再遍历里面的所有文件  
             //方法的递归  
             longErgodic(file2, files);  
        }  
    }  
}  

2.再建一个主方法调用类

package com.xykj.lesson2;  
  
import java.io.File;  
import java.util.List;  
  
public class Test2 {  
    /**  
     * 递归实现输入任意目录,列出文件以及文件夹  
     *   
     * 设计:在FileUtils类里面实现了逻辑操作,在另一边调用就可以了  
     * */  
    public static void main(String[] args) {  
         //比如输入D盘  
        Listlist=FileUtils.getAllFiles("D:");  
        //输出所有的文件和文件夹的名字  
        for (File file : list) {  
            System.out.println(file);  
        }  
  
    }  
  
}  

(三) 递归实现列出当前工程下所有.java文件

package com.xykj.lesson3;  
  
import java.io.File;  
import java.util.List;  
  
import com.xykj.lesson2.FileUtils;  
  
public class Test3 {  
    /**  
     * 递归实现列出当前工程下所有.java文件  
     * 还是要题目2的遍历文件的工具类来获取所有的文件,再过滤.java文件就可以了  
     * 当前目录的地址:输入.就可以获取  
     * */  
    public static void main(String[] args) {  
         //输入.  获取当前文件的 所有文件  
        Listlist=FileUtils.getAllFiles(".");  
        //输出.java后缀的文件的名字  
        for (File file : list) {  
            if (file.toString().endsWith(".java")) {  
                System.out.println(file.getName());  
            }  
        }  
  
    }  
  
}  

(四)从磁盘读取一个文件到内存中,再打印到控制台

package com.xykj.lesson4;  
  
import java.io.File;  
import java.io.FileInputStream;  
  
public class Tset4 {  
    /**  
     * 从磁盘读取一个文件到内存中,再打印到控制台  
     *   
     * 程序设计:  
     * 1、读取文件用到FileinputSteam   
     * 2、把读取的内容不断加入到StringBuffer,  
     * 3、再把StringBuffer打印出来就可以  
     * */  
    public static void main(String[] args) {  
  
        // 读取D:\notePad\aa.txt里面的内容  
        File file = new File("D:\\notePad\\aa.txt");  
        try {  
            // 创建读取流即输入流  
            FileInputStream fis = new FileInputStream(file);  
            int len = 0;  
            byte[] buf = new byte[1024];  
            StringBuffer sb = new StringBuffer();  
            // 把读取的数据添加到StringBuffer里面  
            while ((len = fis.read(buf)) != -1) {  
                sb.append(new String(buf, 0, len));  
            }  
            // 把StringBuffer里面的内容打印出来  
            System.out.println(sb);  
            fis.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}


免责声明:本文文字及图片由小编转载自网络,版权所有权归原作者所有,如有侵权请及时联系我们进行删除。

以上是小编为大家带来的最新资讯,喜欢的朋友们可以继续关注本站最新动态,也可以咨询在线客服。


Java技术排行
标签列表
网站分类
文章归档
最近发表