
お世話になります。
ローカルで作成したClassファイルを使って、ローカルにあるExcelファイルをLAN上にあるサーバのフォルダにファイルコピーしたいのですが、やり方がわかりなくて困ってます。
同一PC上だと
final String output = "C:\\MyDoc\\test\\test.xls";
と、宣言しておいて
PrintWriter pw = new PrintWriter(new FileWriter(output)));
のように記述して出力できてます。
単純に考えると、パスを切る宣言でサーバのパスを切ればいいのかと思い、そうしてみましたが上手くいきません。
いい方法をご存知でしたらお教えください。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
結局
プログラム(クラスファイル)のある場所
プログラムを実行するバッチファイルのある場所
SQLファイルのある場所
は
全てBサーバー
だけど、
最初にキックするバッチが
Aサーバー
にあるので、
プログラムはAサーバーのメモリにロードされて、AサーバーのCPUで実行されます。
Aサーバーからファイルの出力先であるCサーバーは
・物理的に線でつながっている
・ネットワークドライブの割り当てなどでAサーバーから見えている
上記条件を満たしていれば大丈夫に思えます。
(あとはプログラム中で出力先のパスはAサーバー(実行している場所)から見たパスで記述しないといけないことに注意して下さい。)
Bサーバーで実行してCサーバーにファイルが出力できたのなら権限は大丈夫そうですね。
あとは…しつこくて申し訳ありませんが、
・プログラムは正常終了しているのですか?
・例外など出ていませんか?
・出ているのに握りつぶしていませんか?
・ログなどに「上手くいかない理由」は出力されていないのでしょうか?
JAVAで例外も発生せずにファイルが出力できずに正常に終了するとは考え難いのですが。
以下余談です。
自分もまだまだ「人に使われる立場の人間」なのであまり偉そうなことは言えませんが、
報告を受ける側として「上手くいかない」と”だけ”報告されて、そのまま「(上手くいかない)理由」を聞かないのはあまりよろしくないと思います。
(それで済むレベルなら構いませんが…)
pcbeginnerさん。
詳しく回答頂きありがとうございました。
やっと理解できてきました。
>プログラムは正常終了しているのですか?
>例外など出ていませんか?
例外処理を特に記述していなかったようです。
classファイルが存在する場所で実行すればOKなので、特に考えていませんでした。
おっしゃるとおりですので、これから記述してテストしてみるつもりです。
余談とはいえ、ご指摘ありがとうございます。
結局は、私自身がJavaのことをよく知らないので聞き込みがよくできなかったこと。
また、よく聞き込みもできずにこちらに書き込んだのは明らかに怠慢ですね。
反省してます。
ともかくお返事いただけて本当に助かりました。
No.3
- 回答日時:
>よく聞いてみるとこういうことのようです
質問者さん本人じゃないようですね…
ですから…
>そうしてみましたが上手くいきません。
プログラム自体は正常終了しますか?
例外などが発生していませんか?
(↑実は例外が発生しているけど
try{
//ファイル出力処理
}catch(Exception e){
//何もしない
}
のように例外を握りつぶしていませんか?)
あと気になったのは、
クラスファイルはBサーバーにある。
んですよね?
でも実際に実行しているのはAサーバーなのでプログラム(JVM)が動いているのはAサーバーですよね?
AサーバーからBサーバーのファイルを書き出すフォルダへの権限はありますか?
???
>同一PC上なので、
AサーバーからBサーバーのバッチを起動して、
Bサーバーのバッチの処理でJAVAを動かしているんだから、プログラムはAサーバーで実行してますよね?
同一PCじゃないんじゃないですか???
簡単なサンプルを作って試してみましたけど、ちゃんとファイルできました。
(ネットワークドライブに割り当てて接続した後に実行しました。)
Zドライブがネットワークドライブです。
--------------------------------------------------
import java.io.*;
public class NetworkDrive{
public static void main(String args[]){
try{
File f = new File("Z:\\hoge\\hogehoge\\hoge.txt");
FileOutputStream fos = new FileOutputStream(f);
String hoge = "hoge";
fos.write(hoge.getBytes());
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
--------------------------------------------------
この回答への補足
pcbeginnerさん。
要領を得なくてすみません。
再度、状況を書いてみますと
----------------------------------------
Aサーバ:Access/mdb(バッチの起動)
Bサーバ:バッチファイル(Javaプログラムの起動)
Bサーバ:Classファイル、Javaプログラムで使用するsqlファイル
Cサーバ:Javaプログラムで作成したExcelファイルの出力先
POIパッケージを使用していて、BサーバからJavaプログラムを直に実行させた場合、CサーバにExcelファイルが出力されています。
フォルダの権限については、そのような権限をつけていないようです。
No.2
- 回答日時:
>そうしてみましたが上手くいきません。
何がどう上手くいかないのでしょうか?
>Classファイルのある場所と出力先が違うと出力できないのです。
出力できないとはどういうことですか?
例外が発生するということですか?
例外ならその内容を記述した方がいいですよ。
可能ならソースも。
また「Classファイルのある場所と出力先が違う」というのは
・フォルダが違う
・ドライブが違う
ということでしょうか?
どちらでも出力はできそうですが…。
アプレットじゃぁないですよね…。
書き込み権限があるフォルダですよね…。
この回答への補足
レスありがとうございます。
よく聞いてみるとこういうことのようです。
------------------------------------------
Aサーバ上にあるAccsess(mdb)からBサーバにあるバッチファイルを起動させ、そのバッチファイルから同じサーバ上にあるClassファイルを起動します。
Accsess(mdb)はバッチファイルを起動するだけ。
実行させるClassファイル(Javaプログラム)では、ある処理をさせた結果をExcelファイルに書き出し、そのExcelファイルをBサーバのあるフォルダ(Xとします)に出力させるということをさせています。
同一PC上なので、
final String output = "C:\\MyDoc\\test\\test.xls";
と、宣言しておいて
PrintWriter pw = new PrintWriter(new FileWriter(output)));
のように記述して出力できるかと思うのですができません。
単純に考えると、パスを切る宣言でサーバのパスを切ればいいのかと思い、そうしてみましたが上手くいきません。
いい方法をご存知でしたらお教えください。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OLE又はDDEを使うVISUAL BESIC...
-
実行ファイルと実行モジュール...
-
コンポーネント`MSCOMM32.cox'...
-
VB6.0で作ったプロジェクトが起...
-
MDBファイルをCSV出力したい
-
Access クエリ実行が急に非常に...
-
なぜプロセスはファイルにアク...
-
以下のように複数のファイルを...
-
AndroidでのRandomAccessFileの...
-
アプリケーションとソースコー...
-
javascriptでのファイル操作に...
-
VBS形式ファイル:ダブルクリッ...
-
HTMLのメールリンクに添付ファ...
-
JavaScriptでコマンドプ...
-
VS2005 リリースビルドしたEXE...
-
java ファイル出力 Cドライブ直下
-
C言語初心者の質問失礼します。
-
FTPでputすると空ファイルが出...
-
フルパスから最後のディレクト...
-
Wordファイルの結合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
コンポーネント`MSCOMM32.cox'...
-
VB6.0で作ったプロジェクトが起...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
jarファイルとjava.exeの関連付...
-
VBAで他のプログラムが起動して...
-
jarの開き方を教えてください。
-
VBAでMP3を鳴らしたい
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
コマンドプロンプトで外のexeや...
-
WScript.Echo と msgbox
-
VBAでEXEファイルを動かす方法...
-
VBS形式ファイル:ダブルクリッ...
-
ネットワーク越しのEXEファ...
-
なぜプロセスはファイルにアク...
-
C言語で計算したファイルをsma4...
おすすめ情報