0

org.eclipse.swt.widgets.FileDialogXMLファイルにパスを使用して保存するEclipseプラグインでファイルパスを取得しています。

web.xml では、パスは次のように保存されます (値が SWT FileDialog から取得されているため、バックスラッシュをフォワードスラッシュに変更したり、バックスラッシュをエスケープしたりすることはできません)。

<init-param>
  <param-name>filePath</param-name>
  <param-value>c:\new\demo\next\version.txt</param-value>
</init-param>

私のフィルターでは、init() メソッドに以下のコードがありますが、特殊文字のためにファイル参照を取得できません

String filePath = filterConfig.getInitParameter("filePath");
// Tried filePath.replace('\\','/') --> Didnot work since \n is a single character
File f = new File(path)
4

2 に答える 2

2

\n は改行と見なされるため、実際のパスを取得できませんでした。

これは、ファイルを読み取っているものは何でもエスケープを想定していることを示唆していますが、これは単にそうではありません。

残念ながら、データの書き込みに使用されたコードやデータの読み取りに使用されたコードを教えてくれませんでした。どちらのパスでもあなたの管理下にありますか?

基本的に、エスケープ解除と同じ方法でエスケープする必要があります。そのため、データの書き込み時にエスケープc:\new\demo\next\version.txtするc:\\new\\demo\\next\\version.txtか、データの読み取り時にエスケープを解除しようとするコードを削除できます。

文字通り試した場合:

string.replace('\\', '/');

戻り値を無視しているため、それはまったく役に立ちません。試したら

string = string.replace('\\', '/');

その後、関連する置換を実行する必要がありましたが、どこでそれを行おうとしていたのか、またはどのように機能しなかったのかについては言及していませんでした。

ここでは、実際にはフォワードとバックスラッシュを赤いニシンとして扱います。基本的に、エスケープしないのと同じ方法でエスケープする必要があります。バックスラッシュをスラッシュに置き換えるとファイル名に役立つ場合がありますが、その置換を実行できない場合は、別の場所で問題が発生します。

于 2012-05-31T18:46:29.883 に答える
0

org.eclipse.swt.widgets.FileDialog を使用して Eclipse プラグインでファイル パスを取得し、そのパスを XML ファイルに保存しています。

web.xml では、パスは次のように保存されます (値が SWT FileDialog から取得されているため、バックスラッシュをフォワードスラッシュに変更したり、バックスラッシュをエスケープしたりすることはできません)。

SWT ファイル ダイアログは、web.xml ファイルを書き込みません。あなたはそうしているので、バックスラッシュを修正できます。それらをスラッシュに変更します。

init() メソッドに以下のコードがありますが、 \n は単一の文字と見なされるため、機能しなかった特殊文字のためにファイル参照を取得できません [コメントの1つから]

これは、web.xml ファイルのデータが間違っていることを意味します。コードでできることは、それを修正することはできません。これはコーディングの問題ではありません。Java ではバックスラッシュを処理する必要はありません。コンパイラは既にそれを行っており、この場合、Web アプリ コンテナーの XML パーサーがそれを行いました。事前に正しいファイル形式を取得する必要があります。

于 2012-06-01T04:47:57.910 に答える