为什么我的程序拒绝创建文件?

has*_*err 4 java exception java-io

在我正在阅读Java的书中,它通过使用写入文件并将其存储的程序来演示序列化.我收到一个奇怪的错误,我不知道如何阅读,它拒绝我访问创建.txt文件.这是错误:

Exception in thread "main" java.io.FileNotFoundException: C:\testFile.txt (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at serializableTests.MyProgram.main(MyProgram.java:18)
Run Code Online (Sandbox Code Playgroud)

这是该计划的两个类:

用户类:

public class User implements Serializable {

    private static final long serialVersionUID = 4415605180317327265L;

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是主要课程:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;


public class MyProgram {
    public static void main(String[] args) throws IOException {
        User user = new User();
        user.setUsername("tpage");
        user.setPassword("password123");

        File file = new File("C:\\testFile.txt");
        OutputStream fileOutputStream = new FileOutputStream(file);
        ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
        outputStream.writeObject(user);
        System.out.println("I've store the user object in a file called " + file.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

mdm*_*dma 12

在最新版本的Windows上,如果没有提升权限,则无法写入系统驱动器的根文件夹.

要使其工作,请将位置更改为另一个驱动器或更改为C中的子文件夹,例如您的配置文件目录,例如c:\ users\yourname\testfile.txt

(请注意,您使用的是.txt结尾,但生成的文件在编辑器中无法读取.序列化是二进制格式.)

编辑:

在代码更改中实现此目的

File file = new File("C:\\testFile.txt");
Run Code Online (Sandbox Code Playgroud)

喜欢的东西

File file = new File("C:\\users\\bane\\testFile.txt");
Run Code Online (Sandbox Code Playgroud)

我已经使用你的SO名称"bane" - 替换你的电脑上的任何登录名.