1

Java で createNewFile() を試みています。次の例を書き留めました。コンパイルしましたが、実行時エラーが発生します。

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();
            }

    }

}

コンパイルはOKです。実行時エラーは

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

ファイル パスの先頭のスラッシュがありません。

これを試して:

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

それはうまくいくはずです!

于 2013-09-14T23:44:53.500 に答える
3

ここでいくつかのポイント

1-ビクターが言ったように、先頭のスラッシュがありません

2- ファイルが作成されている場合、このメソッド「File.createNewFile()」を呼び出すたびに false が返されます。

3- クラスはプラットフォームに大きく依存します (Java が強力なプログラミング言語である主な理由の 1 つは、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();
    }

this way you will create your file in any home directory on any platform, this worked for my windows operating system, and is expected to work for your Linux or Ubuntu as well

于 2013-09-15T00:39:42.173 に答える