お世話になります。
ローカルで作成した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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
c/c++ ビルドしたにもかかわら...
-
VBAで他のプログラムが起動して...
-
OLE又はDDEを使うVISUAL BESIC...
-
コマンドプロンプトで外のexeや...
-
VB2010でスタンバイや休止モー...
-
ローカルのHTMLからexeファイル...
-
VC++での外部プログラムの実行
-
アプリで作成したexeファイルを...
-
VBフォームアプリケーションに...
-
python matplotlibで作ったグラ...
-
ネットワーク越しのEXEファ...
-
LAN接続された外部フォルダに出...
-
jarファイル実行時の環境変数の...
-
exeファイルをホームページ上で...
-
アウトルックが開かない
-
JAVA .jarファイルに再圧縮する...
-
VC++から引数付きexeファイルの...
-
vbsで起動したexeを終了させる方法
-
JavaScriptでコマンドプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
JavaScriptでコマンドプ...
-
c/c++ ビルドしたにもかかわら...
-
VBAで他のプログラムが起動して...
-
VC++から引数付きexeファイルの...
-
VBAでEXEファイルを動かす方法...
-
実行ファイルと実行モジュール...
-
コマンドプロンプトで外のexeや...
-
ローカルのHTMLからexeファイル...
-
64bit環境で32bitのodbc参照
-
VBS形式ファイル:ダブルクリッ...
-
jarファイルとjava.exeの関連付...
-
ファイル名の先頭が数字だと駄...
-
htaファイルが実行されません
-
JAVA .jarファイルに再圧縮する...
-
VBフォームアプリケーションに...
-
JARファイルをEclipseを使って...
-
コンパイル ./aと./a.out の違い
-
VBAでMP3を鳴らしたい
おすすめ情報