2017-06-29 8 views
1

私はWebプロジェクトで作業しており、ファイル(java.io.File)に問題があります。この問題はWebアプリケーション(tomcat 7)として実行したときにのみ発生し、Javaアプリケーションとして実行すると問題は存在しません。ファイルパス(JAVA EE)

new File("dir");というファイルをインスタンス化すると、そのパスはC:// Windows/System32/dirになります。この方法では何もできません。おそらくWindowsの特権がありません。

"私はこの問題を解決しました" new File("C://Users/user/dir")を渡しましたが、私はこの解決策が嫌いです。私はこれを自動的にやりたい、たとえばアプリケーションのパスを取得したいと思いました。私は自分のマシンでコーディングしていますが、デプロイ後は....わかりません。

ヒント?

これは、私が問題を抱えているプロジェクトの一部です.jsf beanです。私のビューでは、addFile()メソッドを呼び出して、自分のビューから受け取ったファイルを保存します。それは動作していますが、前のようにパスを渡す必要があります(下のコードのように)。パスはWindowsディレクトリに移動します。System32

Bean.java 

@ManagedBean 
@ViewScoped 
public class Bean { 

    //ATTRIBUTES AND METHODS 

    public void addFile() { 

     File temporaryFile = new File("temporary"); 
     //... 
     //... 
     //... 

    } 
} 

私はブラジリアンです。

+0

'createTempFile()を使用しますか? https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createTempFile-java.lang.String-java.lang.String-java.nio.file.attribute。 FileAttribute ...- – markspace

答えて

0

あなたがウェブでフォルダのリソースを追加することができますあなたが望むようにファイルを追加する web/resourcesフォルダの下のフォルダファイルにxという名前のファイルを作成すると、スタイル(css)とjavascriptを追加してjsf page.asのサンプルを呼び出すことでテストしました

new File("files/x"); 

答えが欲しい場合は、もう一度問題が発生した場合は教えてください

+0

私はweb/resourcesに "files"というフォルダを作成し、同じ問題を続けます。 –

+0

'System.out.println(新しいファイル(" temp ")。getAbsolutePath());' OUT: "C:\ Windows \ System32 \ files \ x" –

+0

いいえ、私はあなたがフォルダあなたのプロジェクトに存在し、これはあなたの家である –