Java FileOutputStream错误,exists()找不到符号

Java FileOutputStream错误,exists()找不到符号,java,fileoutputstream,Java,Fileoutputstream,嗨,我正在尝试使用FileOutputStream保存文件,但它总是给我FileNotFoundException public void savefile(Object myObject) { try { FileOutputStream f = new FileOutputStream("c:/Something.txt"); ObjectOutputStream fOUT = new ObjectOutputStream(f);

嗨,我正在尝试使用FileOutputStream保存文件,但它总是给我FileNotFoundException

    public void savefile(Object myObject) {
    try {
        FileOutputStream f = new FileOutputStream("c:/Something.txt");
        ObjectOutputStream fOUT = new ObjectOutputStream(f);
        fOUT.writeObject(myObject);  
        f.close();
    } catch (Exception e) {
        System.out.println("Error");
    }
}
这是代码,我已尝试使用此代码:

            if(!f.exists()){
            f.createNewFile();
        }
但上面写着“找不到符号”


我遗漏了什么吗?

默认情况下,无法在Windows下写入
c:\
。尝试使用不同的路径

FileOutputStream f = new FileOutputStream("c:/temp/Something.txt");

在windows上,路径通常包括反斜杠

\
不是frontslashes(在UNIX系统中使用)

请尝试以下操作:

public void savefile(Object myObject) {
try {
FileOutputStream f = new FileOutputStream("C:\\Something.txt");
ObjectOutputStream fOUT = new ObjectOutputStream(f);
fOUT.writeObject(myObject);  
f.close();
} catch (Exception e) {
    System.out.println("Error");
}
}

这就是你真正想要的:

try {
    File thatFile = new File('c:/something.txt')
    if (thatFile.exists()) {
        FileOutputStream f = new FileOutputStream(thatFile);
        ObjectOutputStream fOUT = new ObjectOutputStream(f);
        fOUT.writeObject(myObject);  
            f.close();
    }
}

请尝试打印从createNewFile方法调用返回的值。如果
f
FileOutputStream
,则无法应用
exists
createNewFile
。这些是
File
的方法,我在您的代码中没有看到这些方法。您根本不需要使用
f.createNewFile()
。。。当FileOutputStream写入时,将自动创建该文件。@SMA是否可以更具体一些?检查:*您没有写入C的权限:*您根本不需要使用f.createNewFile()。。。当FileOutputStream被写入时,将自动创建该文件。不管怎样,直接写
c:\
可能是不好的风格
newfileoutputstream(“something.txt”)
可能是最佳选择。它将写入程序正在运行的目录,这可能是op首先想要的…@Reimeus好吧,我尝试了另一个路径…它总是给我错误,但文件被创建了,它被弄乱了:s@Leandro你是说文件都乱七八糟了?您正在向文件中写入序列化对象,因此您将无法在文本编辑器中查看数据…@RudolphEst如果我不能正确解释我的问题,对不起,我是一名意大利学生,我正在尝试学习Java:s我正在尝试保存一个数组,以避免丢失我在数组中编写的“内容”,那么…我应该如何保存该文件以便使用“读取”方法再次“使用”它呢?每个文件在第一次写入之前都不存在。你的代码实际上会阻止任何以前没有写过的文件的异常和写入。问题是文件不是自动创建的,而不是海报只想在它已经存在的情况下写入它。这在较新版本的java(我认为是1.4以后的版本)上实际上并不重要。无论是
c:\\something.txt
还是
c:/something.txt
都应该可以。谁说这是Windows,你真的认为问题出在那里吗?使用斜杠而不是反斜杠是一个安全的赌注。您基本上只重写了问题中的代码(格式不好),并使其仅在Windows上运行。@RudolphEst您是说反斜杠可以在非Windows平台上运行吗?@afterfox我是说Windows中的文件路径中的“\\\”或“/”是等效的,因此如果其中一个可以运行,则两者都可以运行。
try {
    File thatFile = new File('c:/something.txt')
    if (thatFile.exists()) {
        FileOutputStream f = new FileOutputStream(thatFile);
        ObjectOutputStream fOUT = new ObjectOutputStream(f);
        fOUT.writeObject(myObject);  
            f.close();
    }
}