java - java.io.File.createNewFile() 处的 IOException;

标签 java serialization filestream ioexception

我确实有一些序列化代码不起作用。我尝试在 if 语句中插入 CanRead() 和 CanWrite() ,这表明它们没有读写权限。我还尝试将 'java.io.File.setReadable' 和 'java.io.File.setWriteable 插入 true 但它仍然抛出错误。

代码如下:

public static void save(Object obj, String filename) throws FileNotFoundException, IOException
{
    File f = new File("c:/DatoChecker/" + filename);
    File dir = new File("c:/DatoChecker");
    if(!dir.exists())
        dir.mkdirs();
    f.setReadable(true);
    f.setWritable(true);
    if(!f.exists())
    {
        f.createNewFile();
    }
    FileOutputStream op = null;
    ObjectOutputStream objectStream = null;
    op = new FileOutputStream(f);
    objectStream = new ObjectOutputStream(op);
    objectStream.writeObject(obj);
    objectStream.close();
}

public static Object fetch(String filename) throws FileNotFoundException, IOException, ClassNotFoundException
{
    File f = new File("c:/DatoChecker" + filename);
    File dir = new File("c:/DatoChecker");
    if(!dir.exists())
        dir.mkdirs();
    f.setReadable(true);
    f.setWritable(true);
    if(!f.exists())
    {
        f.createNewFile();
    }
    FileInputStream ip = null;
    ObjectInputStream objectStream = null;
    Object obj = null;
    ip = new FileInputStream(f);
    objectStream = new ObjectInputStream(ip);
    obj = objectStream.readObject();
    ip.close();
    objectStream.close();  
    return obj;
}

堆栈跟踪:

SEVERE: null
java.io.IOException: access denied
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:947)
    at com.check.me.Serialization.fetch(Seralization.java:39)
    at com.check.me.GoodsList.load(GoodsList.java:82)
    at com.check.me.START.main(START.java:22)

用于保存的内容与 GoodsList 一致(仅保存而不是加载)及以上,但下面的内容相当长,所以我暂时将其保留。

感谢您事先的帮助
海狮2

最佳答案

您声明您没有有读取或写入的权限。事实上,您会收到一条错误消息,告诉您没有权限。您需要更改创建文件的目录的 ACL,或者选择其他目录。

关于java - java.io.File.createNewFile() 处的 IOException;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798787/

相关文章:

java - Java 包是否应该抛出其依赖模块的已检查异常

java - 这个递归循环代码是如何执行的

serialization - 如何在 Protocol Buffer 中弃用整个消息?

c - 为什么fread()函数读取后,光标会跳转到随机位置?

Java 8 时区 ZoneRulesException : Unknown time-zone ID: EST

java - 尝试在运行时从外部 JAR 加载类时出现 ClassNotFoundException

c# - 如何使用 Newtonsoft.Json 序列化 C# ref 字段?

java - Jackson @JsonView 注释会干扰可见性

c# - 我什么时候应该读一个文件,什么时候应该逐行阅读?

c# - 删除文本文件中的行并替换字符串