Java安全io流相关操作
本文介绍了Java中的IO流及其在数据传输中的应用,并详细讲解了文件操作的基础知识,包括File对象的创建与管理、文件及目录的增删改查等基本操作。 2025-12-17 08:27:10 Author: www.freebuf.com(查看原文) 阅读量:10 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Java安全-IO流

  • io流用来在 Java 程序和“外部世界”之间传输数据

  • java项目中的相对路径

    Java 中的相对路径,默认是相对于「程序的工作目录(Working Directory)」
    在 IDEA 里,默认就是「项目根目录」

一、文件相关操作

1.创建file对象

本质上是三种构造方式

  • 根据完整路径字符串创建

    // 直接传递完整路径
    File f1 = new File("D:\\test\\java.txt"); 
    // 或者使用相对路径(相对于项目根目录)
    File f2 = new File("src/main/resources/config.xml");
    
    System.out.println(f1.getAbsolutePath());
    
  • 根据“父路径字符串”和“子路径字符串”创建

    String parentPath = "D:\\test";
    String fileName = "java.txt";
    
    // 父路径字符串 + 子路径字符串
    // 系统会自动补全中间的分隔符(Windows是\, Linux是/)
    File f3 = new File(parentPath, fileName); 
    
    System.out.println(f3.getPath()); // 输出 D:\test\java.txt
    
  • 根据“父 File 对象”和“子路径字符串”创建

    // 先创建父级目录对象
    File parentDir = new File("D:\\test");
    String fileName = "java.txt";
    
    // 父File对象 + 子路径字符串
    File f4 = new File(parentDir, fileName);
    
    System.out.println(f4.getPath());
    

boolean created = file.createNewFile();通过调用file对象的这个方法可以创建文件

2.获取file对象信息

  • 获取路径与名称

    image-20251215221009667

  • 获取文件状态

    image-20251215221035460

  • 获取文件属性

    image-20251215221114792

3.目录与文件操作

操作方法名返回值关键注意点
文件/目录删除delete()boolean不走回收站,直接抹除;删除目录时,目录必须为空
创建单级目录mkdir()boolean只有父目录存在时才能创建成功。
创建多级目录mkdirs()boolean最推荐。如果父目录不存在,会自动补全所有父目录。
// 场景 A:创建单级目录 (mkdir)
// 假设 D:\test 存在,创建 D:\test\demo 才会成功
File dir1 = new File("D:\\test\\demo");
boolean mk1 = dir1.mkdir(); 
System.out.println("单级目录创建结果:" + mk1);

// 场景 B:创建多级目录 (mkdirs) - 【推荐】
// 即使 D:\newTest 不存在,也会自动创建 D:\newTest\a\b
File dir2 = new File("D:\\newTest\\a\\b");
boolean mk2 = dir2.mkdirs();
System.out.println("多级目录创建结果:" + mk2);


// --- 1. 文件删除 ---

// delete() 方法立即生效,不走回收站
boolean delFile = file.delete();
System.out.println("删除文件(data.txt)结果:" + delFile);

// --- 2. 目录删除 ---    
// 【注意】尝试删除 D:\newTest\a 目录
// 现在的结构是 D:\newTest\a\b (b是空目录)
File parentDir = new File("D:\\newTest\\a");
// 此时 a 下面还有 b,所以 a 不是空目录,删除会失败!
boolean delDirFail = parentDir.delete(); 
System.out.println("删除非空目录(a)结果:" + delDirFail); // 输出 false

// 正确做法:必须先删除 b,再删除 a
boolean delSubDir = new File("D:\\newTest\\a\\b").delete();
System.out.println("删除子目录(b)结果:" + delSubDir); // true (因为b是空的)

boolean delParentDir = parentDir.delete();
System.out.println("再次删除目录(a)结果:" + delParentDir); // true (现在a空了)

二、IO流操作

在 Java 中,数据传输像水流一样。

  • 输入(Input):数据从“外部”(硬盘、网络、键盘)流向“程序内存”。(读)

  • 输出(Output):数据从“程序内存”流向“外部”。(写)

  • 特点:流是有方

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/462469.html
如有侵权请联系:admin#unsafe.sh