0

そのため、新しいファイルを作成するために次のコードを作成しています。例外がスローされる理由を誰かが知っていますか?

基本的に、コンストラクターを使用した後にファイルが存在するかどうかを確認すると思っていましたが、そうではありませんでした。作成すると思っていましたが、どちらも起こりませんでした。

Java Code:


import java.util.Scanner;
import java.lang.Integer;
import java.io.*;
import java.lang.*;
import java.io.File;

class CreateNumberFile{
    public static void main(String args[]){
        //Ask user for filename and highest number
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the filename");
        String fileName = in.next();
        System.out.println("Enter the highest number for this file");
        int maxNumber = in.nextInt();

        System.out.print("A file titled " + fileName+ " will be created containing a");
        System.out.println(" string of numbers with numbers ranging from 0 to: " + maxNumber);

        // Create a File object 
        File myFile = new File("home/Users/Joe/Dropbox/Programming/Java/Projects/g2.txt");
        // Tests whether the file or directory denoted by this abstract 
        //pathname exists.
        if (myFile.exists()) {
            System.out.println(myFile.getAbsolutePath() +
                    " File already exists");

        } else {
          try{
            //creates a new, empty file named by this pathname
            myFile.createNewFile();
            System.out.println(myFile.getAbsolutePath() + 
                    " File Created Successfully");
          } catch(IOException e){
            System.err.println ("Caught IOException "+e.getMessage());
          }
        }

    }//main
}//class

実行すると、次のエラーが表示されます。

出力:

Caught IOException The system cannot find the path specified

コードがファイルが存在するかどうかを確認し、存在しない場合は、コンストラクターを使用してファイルを作成すると思いましたか? 何か案は?

4

2 に答える 2

0

あなたのパスは絶対パスのように見えますが、先頭のスラッシュを忘れているようです。

于 2012-11-26T00:29:49.973 に答える
0

ファイルがそうでない場合、exist()親ファイルもそうでない可能性があるexist()ため、それらを作成する必要があります。

try {
    // create all dirs needed to myFile's parent to exist()
    myFile.getParent().mkdirs();
    //creates a new, empty file named by this pathname
    myFile.createNewFile();
    System.out.println(myFile.getAbsolutePath() + " File Created Successfully");
} catch(IOException e) {
    System.err.println ("Caught IOException "+e.getMessage());
}

さらに、Alexey Feldgendler が言ったよう/に、ルートmyFileのパスがありません。

于 2012-11-26T00:34:06.703 に答える