java.io.File.createNewFile()中的IOException;

java.io.File.createNewFile()中的IOException;,java,serialization,filestream,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

我确实有一些序列化代码,但它不起作用。我尝试在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中的Conguet(保存而不是加载)和up,但是下面的代码要长一点,所以我暂时不做了

事先谢谢你的帮助

Highace2

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

我现在更新了代码(请参阅第一篇文章),以便在C:/-目录中创建另一个目录。现在它可以保存文件,但不能加载它们。它仍然抛出相同的异常。@Highace2请注意,在
fetch()
方法中,文件名缺少斜杠,应该是:
file f=new file(“c:/DatoChecker/”+fileName)@Gangnus您可能已经注意到,这个问题已经得到了回答。它不是如何创建的,而是在哪个范围内指定的。基本上选择正确的目录。问题是,这是一个重复的问题。它必须被关闭,评论,但没有回答。