Java总结IO篇之File类和Properties类

上篇:File类

File类将文件文件夹封装成对象
IO流+File

File file = new File(String path);
File file = new File(String dir,String fineName);
File file = new File(File dir,String fineName);
一、普通测试
public class FileDemo {
    public static String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File.txt";
    public static String dirPath = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File";
    public static String dirPaths = "I:\\Java\\Base\\Thinking\\src\\IOTest\\a\\b\\c";
    public static File file = new File(path);
    public static File newDir = new File(dirPath);
    public static File newDirs = new File(dirPaths);

    public static void main(String[] args) throws Exception {
//        otherTest();//其他测试
//        createTest();//创建文件
//        judgeTest();//判断File文件
//        getInfoTest();//获取File对象信息
//        deleteTest();//删除文件
    }
1.其他测试
String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File.txt";
File file = new File(path);
System.out.println(file);//file.toString()返回文件路径
//I:\Java\Base\Thinking\src\IOTest\File.txt
System.out.println(File.separator);//系统路径分隔符:\
file.renameTo(new File(file.getParent(), "file.txt"));//重命名到(剪切)
2.创建文件
private static void createTest() throws IOException {
    //返回是否创建成功,如果已经存在,返回false
    System.out.println("创建文件: " + file.createNewFile());//创建文件: true
    System.out.println("创建一级文件夹: " + newDir.mkdir());//创建一级文件夹: true
    System.out.println("创建多级文件夹: " + newDirs.mkdirs());//创建多级文件夹: true
}
3.判断File文件
private static void judgeTest() {
    System.out.println("文件是否存在" + file.exists());//文件是否存在true
    System.out.println("文件是否可执行: " + file.canExecute());//文件是否可执行: true
    System.out.println("文件是否可读: " + file.canRead());//文件是否可执行: true
    System.out.println("文件是否可写: " + file.canWrite());//文件是否可执行: true
    System.out.println("是否是文件: " + file.isFile());//是否是文件: true
    System.out.println("是否是文件夹: " + file.isDirectory());//是否是文件夹: false
    System.out.println("是否是绝对路径: " + file.isAbsolute());//是否是绝对路径: true
    System.out.println("是否是隐藏: " + file.isHidden());//是否是隐藏: false
}
4.获取File对象信息
private static void getInfoTest() {
    System.out.println("路径: " + file.getPath());
    //路径: I:\Java\Base\Thinking\src\IOTest\File.txt
    System.out.println("绝对路径: " + file.getAbsolutePath());
    //绝对路径: I:\Java\Base\Thinking\src\IOTest\File.txt
    System.out.println("文件名: " + file.getName());//文件名: File.txt
    System.out.println("文件名: " + newDir.getName());//文件名: File
    System.out.println("父文件夹名: " + file.getParent());
    //父文件夹名: I:\Java\Base\Thinking\src\IOTest
    System.out.println("父文件夹对象: " + file.getParentFile());
    //父文件夹对象: I:\Java\Base\Thinking\src\IOTest
    System.out.println("文件所在盘符总大小: " + file.getTotalSpace() / 1024 / 1024 / 1024 + "G");//50G
    System.out.println("文件所在盘符剩余大小: " + file.getUsableSpace() / 1024 / 1024 / 1024 + "G");//20G
    System.out.println("文件所大小:" + file.length()+"b");//文件所大小:5b
    String time = new SimpleDateFormat("yyyy/MM/dd a hh:mm:ss ").format(file.lastModified());
    System.out.println("最后修改日期: " + time);
    //最后修改日期: 2018/10/10 下午 01:10:17
}
5.删除文件
private static void deleteTest() {
    System.out.println("删除文件: " + file.delete());//删除文件: true
    file.deleteOnExit();//虚拟机退出时删除,避免删除临时文件前发生异常后删除不了
}

二、文件列表
1.基本使用
private static void listFile() {
    
    File[] files = File.listRoots();//显示系统盘符
    for (File f : files) {
        System.out.print(f+"  ");
        //C:\  D:\  E:\  F:\  G:\  H:\  I:\  J:\  K:\
    }
    
    String[] list = file.getParentFile().list();
    for (String s : list) {
        System.out.println(s);
    }
    //a
    //Activity.md
    //BufferedWriter.txt
    //fate.jpg
    //File
    //file.txt
    //FileInputStream.txt
    //FileWriter.txt
    //video.avi
    //《吸血鬼日记》原著英文.txt
    //键盘录入
    //键盘录入-GKB
    //键盘录入-UTF-8
    
    File[] listFiles = file.getParentFile().listFiles(new FilenameFilter()
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");//过滤掉.txt以外的文件
        }
    });
    for (File lf : listFiles) {
        System.out.println(lf);
        //I:\Java\Base\Thinking\src\IOTest\BufferedWriter.txt
        //I:\Java\Base\Thinking\src\IOTest\file.txt
        //I:\Java\Base\Thinking\src\IOTest\FileInputStream.txt
        //I:\Java\Base\Thinking\src\IOTest\FileWriter.txt
        //I:\Java\Base\Thinking\src\IOTest\《吸血鬼日记》原著英文.txt
    }
}
2.删除一个文件夹内的所有文件

删除文件夹,如果里面有内容,从里往外删
不能直接删除有文件的文件夹

private static void deleteDir(File dir) {
    for (File file : dir.listFiles()) {
        if (file.isDirectory()) {
            deleteDir(file);
        } else {
            String name = file.getName();
            boolean ok = file.delete();
            System.out.println(ok ? "成功删除--" + name : "删除失败--" + name);
        }
    }
    dir.delete();
}
3.将某文件加图片的路径保存到目标文件
public class OpenDir {
    public static void main(String[] args) {
        File file = new File("E:\\UI");
        List<File> list = new ArrayList<>();
        fileToList(file, list);
        System.out.println(list.size());
        write2File(list, "F:\\list.txt");
    }

    /**
     * 将某文件夹的图片文件加入list中
     * @param dir 目标文件夹
     * @param list 列表
     */
    private static void fileToList(File dir, List<File> list) {
        for (File file : dir.listFiles()) {
            if (file.isDirectory()) {
                fileToList(file, list);
            } else {
                if (file.getName().endsWith(".png")||file.getName().endsWith(".jpg")) {
                    list.add(file);
                }
            }
        }
    }

    /**
     * 将文件列表每项的路径保存到目标文件
     * @param list
     * @param target
     */
    public static void write2File(List<File> list, String target) {
        BufferedWriter bfw = null;
        try {
            bfw = new BufferedWriter(new FileWriter(target));
            for (File file : list) {
                String path = file.getAbsolutePath();
                bfw.write(path);
                bfw.newLine();
                bfw.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bfw != null) {
                    bfw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

60000+图片的路径保存到了文件中

9414344-6697cf2b653ecebc.png
保存文件列表.png

File对象差不多就这些


下篇:Properties类

HashTable的子类,具有Map的特点,并且键值均为String
Map与IO结合,可用于键值对形式的配置文件,如下面的颜色选择器

9414344-e7edec23372f4f9f.png
配置文件.png

一、Properties对象的简单使用

既然是继承自HashTable,基本操作应该不在话下,Map中常用put(),get()
为了语义化,Properties类有setProperty()和getProperty()---当然你也可以用put(),get()

1.存储与获取
public class PropertiesTest {
    public static void main(String[] args) {
        Properties prop = new Properties();
        prop.put("TextColor", "red");
        prop.put("FontSize", "25sp");

        System.out.println(prop);//{FontSize=25sp, TextColor=red}
        System.out.println(prop.getProperty("TextColor"));//red
    }
}
2.遍历
//获取键的集合
Set<String> keys = prop.stringPropertyNames();
for (String key : keys) {
    System.out.print(key+":"+prop.getProperty(key)+"  ");
    //FontSize:25sp  Family:KaiTi  TextColor:red
}
//使用map的api遍历:
prop.keySet().iterator().forEachRemaining(key->{
    System.out.print(key+":"+prop.get(key)+"  ");
    //FontSize:25sp  Family:KaiTi  TextColor:red
});

Properties与文件IO结合
9414344-c11d8682925468ff.png
config.png
1.如果没有Properties对象:啰嗦一大堆

打开颜色选择器 :读流I-->字符串分割-->字符串存入Map-->使用Map对象还原用户配置
修改配置时 :写流O-->创建Map对象-->字符串拼接-->字符串存入配置文件

private static void useHashMapReadConfig() throws IOException {
    //将配置文件读入hashMap对象
    String configPath = "I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini";
    BufferedReader bfr = new BufferedReader(new FileReader(configPath));
    HashMap<String, String> hashMap = new HashMap<>();
    String line = null;
    while ((line = bfr.readLine()) != null) {
        String[] split = line.split("=");
        hashMap.put(split[0], split[1]);
    }
    bfr.close();
    System.out.println(hashMap);
    //{FontSize=25sp, Family=KaiTi, TextColor=red}
}
使用Properties对象:两行搞定

打开颜色选择器:读流I-->使用Properties对象还原用户配置
关闭颜色选择器:写流O-->使用Properties对象修改配置文件

Properties prop = new Properties();
prop.load(new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini"));
System.out.println(prop);//{FontSize=25sp, Family=KaiTi, TextColor=red}
list方法:可以指定输出流
prop.list(System.out);
//-- listing properties --
//FontSize=25sp
//Family=KaiTi
//TextColor=red
3.修改配置文件并保存
 prop.setProperty("TextColor", "blue");
 //修改后需要用store保存到文件中,否则修改无效
 prop.store(new FileOutputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini"),"toly--mod");
9414344-45ed7e0295c3c9b5.png
修改config.png

后记:捷文规范
1.本文成长记录及勘误表
项目源码日期备注
V0.1--无2018-10-11Java总结IO篇之File类和Properties类
V0.2--无--
2.更多关于我
笔名QQ微信爱好
张风捷特烈1981462002zdl1994328语言
我的github我的简书我的CSDN个人网站
3.声明

1----本文由张风捷特烈原创,转载请注明
2----欢迎广大编程爱好者共同交流
3----个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
4----看到这里,我在此感谢你的喜欢与支持

转载于:https://www.cnblogs.com/toly-top/p/9781848.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旅游社交小程序功能有管理员和用户。管理员有个人中心,用户管理,每日签到管理,景点推荐管理,景点分管理,防疫查询管理,美食推荐管理,酒店推荐管理,周边推荐管理,分享圈管理,我的收藏管理,系统管理。用户可以在微信小程序上注册登录,进行每日签到,防疫查询,可以在分享圈里面进行分享自己想要分享的内容,查看和收藏景点以及美食的推荐等操作。因而具有一定的实用性。 本站后台采用Java的SSM框架进行后台管理开发,可以在浏览器上登录进行后台数据方面的管理,MySQL作为本地数据库,微信小程序用到了微信开发者工具,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得旅游社交小程序管理工作系统化、规范化。 管理员可以管理用户信息,可以对用户信息添加修改删除。管理员可以对景点推荐信息进行添加修改删除操作。管理员可以对分享圈信息进行添加,修改,删除操作。管理员可以对美食推荐信息进行添加,修改,删除操作。管理员可以对酒店推荐信息进行添加,修改,删除操作。管理员可以对周边推荐信息进行添加,修改,删除操作。 小程序用户是需要注册才可以进行登录的,登录后在首页可以查看相关信息,并且下面导航可以点击到其他功能模块。在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。用户想要把一些信息分享到分享圈的时候,可以点击新增,然后输入自己想要分享的信息就可以进行分享圈的操作。用户可以在景点推荐里面进行收藏和评论等操作。用户可以在美食推荐模块搜索和查看美食推荐的相关信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值