お世話になります。
ローカルで作成した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で質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- ネットワーク ネットワーク資格情報について 2 2022/08/05 12:50
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
VBAでMP3を鳴らしたい
-
コンパイル ./aと./a.out の違い
-
LINK : fatal error LNK1104に...
-
Visual BASIC か...
-
ローカルのHTMLからexeファイル...
-
デスクトップにショートカット...
-
OLE又はDDEを使うVISUAL BESIC...
-
xismoについてです!開こうとす...
-
WScript.Echo と msgbox
-
VBS形式ファイル:ダブルクリッ...
-
VC++から引数付きexeファイルの...
-
javascriptでのファイル操作に...
-
ASPからexeプログラムへ引数
-
VBからhtaファイルを開くには?
-
exeファイルで実行できない
-
実行ファイルと実行モジュール...
-
batからexeを起動した際の戻り...
-
You don't have permission to ...
-
batファイルの作成方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
xismoについてです!開こうとす...
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
LINK : fatal error LNK1104に...
-
VBAでEXEファイルを動かす方法...
-
c/c++ ビルドしたにもかかわら...
-
WScript.Echo と msgbox
-
64bit環境で32bitのodbc参照
-
VBAでMP3を鳴らしたい
-
コマンドプロンプトで外のexeや...
-
batからexeを実行し戻り値を受...
-
ファイルアイコンの左下に緑の□...
-
コンパイル ./aと./a.out の違い
-
htaファイルが実行されません
-
jarファイルとjava.exeの関連付...
-
JAVA .jarファイルに再圧縮する...
-
VB6.0で作ったプロジェクトが起...
-
以下のように複数のファイルを...
おすすめ情報