2

次のコードは、私が経験している問題を示しています。

// Assume working directory is empty.

File foo = new File("asdf");
foo.createNewFile(); // returns true, creates file "asdf" in working directory.

File bar = new File("asdf");
bar.mkdir(); // returns false

すでに存在するファイルと同じ名前のディレクトリを作成しようとすると、「mkdir()」関数はfalseを返します。操作が逆の順序で実行される場合にも、同様の問題が発生します。ディレクトリが最初に作成されると、「createNewFile()」関数はfalseを返します。

2番目の「File」オブジェクトが初期化されると、前の行で作成されたファイルが「検出」されるため、「bar.exists()&& bar.isFile()」がtrueになることを理解しています。

誰かが既存のフォルダと同じ名前のファイルを作成する方法とその逆の方法を詳しく教えてください。

ありがとう、ハリ

4

4 に答える 4

9

オペレーティング システム (ファイル システム) で許可されていないため、不可能です。そのようなJavaの問題ではありません。

于 2012-04-19T15:57:03.263 に答える
3

ファイルとフォルダーを同じ名前で同じフォルダーに作成することはできません。名前はそのファイル/フォルダーオブジェクトのIDであるため、OSはそれを許可しません。

それが可能であると仮定すると、次のようになります。

foo (folder)
|- bar (folder)
|- bar (file)

「open foo/bar」というコマンドを受け取ったときに、どちらを開くかをどのように決定しますか? その情報だけでは判断できない場合、OS はどのように判断すべきでしょうか?

于 2012-04-19T16:01:24.043 に答える
2

それを許可していないのはあなたのオペレーティングシステムであるため、それは不可能です。いつでも試すことができ、失敗した場合はフォルダー (またはファイル) の名前を変更します。

File bar = new File("asdf");
if(!bar.mkdir()) {
    // rename your folder or file
    bar.mkdir();
}
于 2012-04-19T16:02:18.380 に答える
1
// Assume working directory is empty.

File foo = new File("asdf.txt");
foo.createNewFile(); // returns true, creates file "asdf" in working directory.

File bar = new File("asdf");
bar.mkdir(); // returns false

上記のコードはあなたのために働くはずです。ファイルを作成するときはいつでも、ファイルとディレクトリを区別できるように拡張子を付けてください。

于 2015-02-19T09:04:08.087 に答える