1

我正在尝试在 java 中创建 NewFile()。我已经写下了以下示例。我已经编译了它,但是遇到了运行时错误。

import java.io.File;
import java.io.IOException;


public class CreateFileExample
{
    public static void main(String [] args)
    {


            try
            {
                    File file = new File("home/karthik/newfile.txt");

                    if(file.createNewFile())
                    {
                            System.out.println("created new fle");
                    }else
                    {
                            System.out.println("could not create a new file");
                    }
            }catch(IOException e )
            {
                    e.printStackTrace();
            }

    }

}

它正在编译。我得到的运行时错误是

java.io.IOException: No such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:947)
    at CreateFileExample.main(CreateFileExample.java:16)
4

3 回答 3

3

这里有几点

1-正如维克多所说,您缺少前导斜杠

2-如果您的文件已创建,那么每次调用此方法“File.createNewFile()”都会返回 false

3-您的类非常依赖于平台(Java 是强大的编程语言的主要原因之一是它不依赖于平台),相反,您可以使用 System.getProperties() 检测相对位置抛出:

    // get System properties :
    java.util.Properties properties = System.getProperties();

    // to print all the keys in the properties map <for testing>
    properties.list(System.out);

    // get Operating System home directory
    String home = properties.get("user.home").toString();

    // get Operating System separator
    String separator = properties.get("file.separator").toString();

    // your directory name
    String directoryName = "karthik";

    // your file name
    String fileName = "newfile.txt";


    // create your directory Object (wont harm if it is already there ... 
    // just an additional object on the heap that will cost you some bytes
    File dir = new File(home+separator+directoryName);

    //  create a new directory, will do nothing if directory exists
    dir.mkdir();    

    // create your file Object
    File file = new File(dir,fileName);

    // the rest of your code
    try {
        if (file.createNewFile()) {
            System.out.println("created new fle");
        } else {
            System.out.println("could not create a new file");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

这样,您将在任何平台上的任何主目录中创建文件,这适用于我的 Windows 操作系统,预计也适用于您的 Linux 或 Ubuntu

于 2013-09-15T00:39:42.173 回答
3

您缺少文件路径中的前导斜杠。

尝试这个:

File file = new File("/home/karthik/newfile.txt");

那应该工作!

于 2013-09-14T23:44:53.500 回答
1

实际上,当没有上述示例中的目录“karthik”时会出现此错误,并且 createNewFile() 只是创建文件而不是目录,使用 mkdir() 用于目录,然后 createNewFile() 用于文件。

于 2013-09-16T13:47:39.150 回答