1

これは比較的単純な質問だと思います。実際には、Java よりも Windows に問題があると思います。

ファイルを新しいディレクトリにコピーする方法があります。これは、元のパスで作成された File と、コピーの目的のパスで作成された File の 2 つの File オブジェクトを取ります。この方法を使用してファイルをデスクトップに正常にコピーしたので、この方法が機能すると確信しています。

ただし、実際に必要なパスを使用するとエラーが発生します。

java.io.FileNotFoundException: PATH (指定されたパスが見つかりません)

は、使用しようとしてPATHいるパスです。

これが私の推測です。別のマシンで使用するためにこのプログラムを作成しています。そのため、私が使用しようとしているパスは次のとおりです。

C:\Users\XXXXXX\res​​t_of_path\filename.file

XXXXXX私がプログラムを書いているマシンのプライマリユーザーはどこですか。

このディレクトリはシステムに存在しXXXXXXますが、システムのユーザーではありません。そのため、Windowsが問題を引き起こしていると推測しています。

マシンに依存し、ハードコードされていないソリューションを使用するようにコードを変更しています (System.getProperty)。

しかし、Windows と Java のユーザーとして、学術的な観点から、なぜこの問題が発生しているのかを知りたいと思っています。

前もって感謝します。

編集:二重のバックスラッシュを意味するときに、誤ってスラッシュを使用しました。スペルミスではないことを確認するために、Windows を使用してディレクトリをコピーし、プログラムに貼り付けました (バックスラッシュを 2 倍にしました)。

編集:何人かのユーザーが、私が最初にやろうとしていることよりもはるかにクリーンなものを提案しています。なぜ機能しないのか知りたいので、この質問を開いたままにします。

編集:上記のソリューションを使用しましたが、完全に満足しています。Windows が元のパスへのアクセスを許可しない理由はまだわかりませんが、この時点では気にしないと思います。ありがとう、みんな!

4

1 に答える 1

2

Java および一般的にほとんどのプログラミング言語では、常にファイルの正確なディレクトリを指定する必要はありません。ファイルを取得するために使用しているコードを確認できるとよいのですが、その方法を説明します。

new File("file.txt")プログラムがあるフォルダーからファイルを取得し、のような完全なアドレスを必要としないため、使用していないと思いC:\...\...\...ます。もちろん、異なるオペレーティング システムは異なるパスを使用するため、アドレス全体を使用する必要はありません。

あなたができる最善の方法は、ファイルと要求されたフォルダーをプログラムに関連する場所に置くことです (それがクラスファイルであるか.jarファイルであるかに関係なく)。

しかし、Windows ではSystem.getProperty("...")、ファイル/フォルダーの相対パスとしてディレクトリ URL を取得できることを確認できます。

System.getProperty に関するドキュメント: http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

私はあなたの質問にまったく役に立たなかったり、答えたりしなかったかもしれません。しかし、解決策が見つかることを願っています。

于 2013-08-19T22:25:15.573 に答える