首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么删除FileOutputStream的文件没有异常?

为什么删除FileOutputStream的文件没有异常?
EN

Stack Overflow用户
提问于 2014-10-31 01:11:27
回答 2查看 811关注 0票数 1

我只是花了很多时间跟踪一个没有写入文件的bug,并注意到我在创建FileOutputStream之后但在写入任何内容之前删除了该文件。我可以理解这是错误的,但是为什么不抛出一个异常来删除一个文件,然后尝试在它上面写东西呢?

代码语言:javascript
运行
复制
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test {

    public static void main(String[] args) throws FileNotFoundException, IOException
    {
        File test = new File("test.txt");
        try(OutputStream out = new FileOutputStream(test))
        {
            if(test.exists()) {test.delete();}
            out.write("Hello World".getBytes());
        }
    }
}

我的Java安装坏了吗?我的java -version

代码语言:javascript
运行
复制
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
EN

Stack Overflow用户

发布于 2014-10-31 01:31:05

删除文件通常只涉及从文件系统中删除其目录条目。

File delete方法根据是否允许删除文件返回true或false。这与Files.delete方法不同,后者在无法删除文件时抛出IOException。因为您没有检查这个返回值,所以您不知道文件是否已被删除。

这一点很重要,因为不同的OSes具有不同的文件删除规则。例如,Linux就是perfectly happy to remove a directory entry for a file that is currently open。因此,您仍然可以读/写已删除的文件。

另一方面,Windows enforces mandatory file locking会简单地拒绝删除该文件。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26659238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档