1

ローカル マシン (ファイルのディレクトリは C:\Users\temp\file.txt としましょう) から Windows Server 2008 を搭載したリモート サーバーへの inputStream を作成したい状況があります。

WARファイルにコンパイルする前にこれを試したので、Webアプリでファイルのローカルバージョンを使用するにはどうすればよいですか。

File f = new File("C:\Users\temp\file.txt");

InputStream を使用しようとすると、クラッシュします。存在しないサーバーの C:\Users\temp\file.txt を参照していると思います。

これが「ばかげた」質問であることは知っていますが、提案があれば非常に役立ちます。

4

2 に答える 2

0

あるマシンに保存されているファイルに別のマシンからアクセスしようとしている場合は、何らかの方法でファイルを「共有」する必要があります。これを行うには、かなり簡単な方法がいくつかあります。

  1. ネットワーク ファイル システムをセットアップします。一般的な選択肢は、ドライブとしてマウントされたSambaまたはS3 バケットです。これには、ファイルを読み取る目的ですべてのファイルが「ローカル」に見えるという利点があるため、通常のように使用します。FileInputStream
  2. HTTP を使用して共有します。ファイルを使用してホスト上でApacheなどの HTTP サーバーをセットアップし、ファイルを Web 共有ディレクトリにコピーし、またはApache HTTPComponents ClientURLなどの HTTP クライアントを使用して、その URL でファイルにアクセスします。(このアプローチは、FTP やその他のサービスでも使用できます。)

ファイルの共有は、最初は少し面倒ですが、共有ファイル システムまたは Web サーバーを設定すると、大量のファイルを簡単に共有できます。

于 2013-04-24T19:41:17.000 に答える
-1

このシナリオでは、ホストごとのプロパティ ファイルを使用すると役立ちます。通常、環境間のすべての違いをプロパティ ファイルに含めます。

プロパティ ファイルの切り替えの処理については、PropertyPlaceholderConfigurerを確認してください。

これを拡張して {ENV} プレースホルダーを処理し、これと同様に Spring から実行します

<bean id="propertyConfigurer" class="com.yourcompany.PerHostPropertiesConfigurer">
    <property name="filename" value="appname-{ENV}.ini" />
</bean>

appname-LOCAL.ini にはこれがあります

text.filename=C:\Users\temp\file.txt

appname-PROD.ini で、マウントされたドライブまたは別のローカル パスに変更します。このように、サーバーの観点からアクセスできるものに変更します。

text.filename=Z:\Users\temp\file.txt
于 2013-04-24T19:38:13.673 に答える