Windows上のサーバから受信するXML情報をMac上のクライアントで受信して処理するため、
XMLに書かれたWindowsのパス情報(DTD等)をMac上で扱えるパスに置換する必要があります。
やりたいことは
\\Server\share\ほげ\ほげほげ.dtd
を
/Users/user/smb_mount_point/ほげ/ほげほげ.dtd
に置き換えるような処理です。
文字列処理系のクラスを使いゴリゴリと書き換えることは容易にできる程度のものですが、
java.io.File やnioのセパレータを変更することができれば、そのほうがスマートで可読性のよい
コードになると思っています。
これらのライブラリでシステムデフォルトからファイルセパレータを変更することは
できるのでしょうか。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ファイル内の文字列を書き換えるなら
shellから、find -[時間指定オプション] で新しいファイルを抽出して、
sedを使って書き換えればいいと思う。
それをシェルスクリプトにして、時間指定(cron)で実行させれば
完全自動化じゃね?
Mac上で動で動かすのはJavaのアプリケーションプログラムです。
パスを書き換えた後の処理も当然あるのです。売り物なので何をするものかはここでは言えませんが。
パスを書き換えることが最終目的ではありません。
だいたい文字列置換するのにjavaアプリケーションの中からわざわざシェルを呼び出して文字列置換するようなことは普通はしません。
また、パスを処理する専用のクラスライブラリがあるのに、文字列操作で書き換えるのがスマートでないので質問しました。
もっとひどい方法かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 windows>Mac間のOSライセンス移行 4 2022/06/04 10:28
- iCloud iCloudのデータがMacbookのストレージをいっぱいにしてしまう 2 2022/08/31 22:34
- Windows 10 ドライブとボリューム 6 2022/10/25 18:38
- Mac OS Macで Microsoft Remote Desktop を使うとキーボードの配列が変わってしまう 1 2022/08/08 17:27
- その他(コンピューター・テクノロジー) 以下の用語がわかんないので教えてください!!! ①プロトコルの変換をする装置。トランスポート層からア 1 2023/07/05 09:10
- Excel(エクセル) 年末調整書類をExcel→スプレッドシートへ変換したい場合 2 2022/11/15 17:13
- モニター・ディスプレイ PCモニター解像度について 3 2022/05/08 17:45
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Mac OS mac 2 2022/04/21 11:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
Javaでのデバッグコード削除
-
JavaScriptからJAVAクラスを呼...
-
doGetとdoPostの違い
-
ブラウザを閉じた後のサーバ側...
-
location.hashの遷移
-
VBScriptでのWord印刷
-
スレッドが実行中かどうかの確認
-
どのコンポーネントでクリック...
-
flush()メソッドについて・・・
-
JSP、サーブレットの初期処理
-
処理に時間がかかる場合、ルー...
-
データ未入力時のエラー処理が...
-
Javaプログラムから外部コマン...
-
WPF C#でF10のイベント取得方法...
-
tomcat(struts)で起動時に処理...
-
Java
-
エクセルVBAで、条件に一致する...
-
0 == False はいいけど
-
インスタンス参照でアクセスで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
Javaプログラムからポップアッ...
-
SwingUtilities.invokeLater(ne...
-
Javaでのデバッグコード削除
-
Tomcat高負荷時の設定について
-
JavaScriptからJAVAクラスを呼...
-
データ未入力時のエラー処理が...
-
アコーディオンメニューをアン...
-
ブラウザを閉じた後のサーバ側...
-
[Java] while(true)の意味
-
数値の定数を付ける時
-
Javaアプリケーション実行の返...
-
ラジオボタンの選択判定
-
onBlurとonFocusの処理順序につ...
-
スレッド1とスレッド2を交互に...
-
WPF C#でF10のイベント取得方法...
-
flush()メソッドについて・・・
-
ExcelVBA で文字列の特定の文字...
-
無限ループをわざと作って時計...
おすすめ情報
質問意図が伝わりにくいので回答がつかないようです。
補足します。
Mac上でWindows表現のファイル名部分のみ抜き出し、パスを付け替えることがしたいのです。
File.getName()の動作はWindows環境か、Mac環境で動作が異なり、Mac環境では、UNCからファイル名部分を切り出すことができません。
当然ながらString.substring()などで切り出せば出来る話ですが、それはファイル名部分を切り出すという意図が伝わりにくい、もしくはなんでそんなことをしてるのかコメントで説明がいるようなコードになるので書きたくない。と言うがコーディング意図になります。
一応、これでもまだ少し不満は残りますが、前処理で
windowsPath=windowsPath.replace(“\\”,File.separator);
とする事で自己解決しました。
最終的に以下の方法に落ち着きました。
windowsマシン上でシステムプロパティのインスタンスをシリアライズ
mac上のクライアントプログラムではシリアライズしたインスタンスを読み出し。windowsのセパレーターを取得。
windows側から送られたパスを、上のwindowsのセパレーターからランタイム環境のセパレーターに置換
File.getFileで切り出し。
カテ間違えたかと思うような的外れな回答ばかりでウンザリしましたのでこれで閉じます。
ひとつ妙な回答がつく原因がこれかなとおもったので
補足です。
XML = XMLファイルではありません
XMLの構造を持ったString型のデータで、
TCP/IP通信で取得します。
ファイルの実体はありません。
ファイルとしての実体があるのはDTDだけです。