-2

そのようなことをするのに役立ちます(前の回答で、説明が不十分だと言われたので、今度は poponyatneee を説明しようとします)私にはフォームがあります。フォームだけです。コードは次のとおりです。

<form action="searchf" method="Post">
<input type="text" name="text" autofocus >
<input type="submit" value="">
</form>

ユーザーはこのフォームに、index.txt、hello.html などの異なるファイル名を入力します (名前が重複しているファイルではなく、基本的には txt ファイルになります)。次に、サーブレットはユーザーが入力した文字列を受け取ります。

String myName = request.getParameter("text");

フォルダ内のファイルを探して入力ファイルと呼ばれるプログラムを続行しますが、実際には index.html フォルダ内のファイルを検索するプログラムを入力する必要がありますが、実際には index.html だけでなく、ここで拡張子を入力するヘルプが必ずしも試みられたわけではありません。そうする :

String myNamee = request.getParameter("text");
String myName = myNamee.replaceFirst("[.][^.]+$", "");

うまくいきませんでした(返信があればうれしいです

エリック・スコット

4

2 に答える 2

0

ファイル拡張子をファイル名から分離する必要がある場合は、次のようにすることができます。

String file = request.getParameter("text");
String fileNoExt, fileExt = "";
if(file.indexOf(".") == -1) {
   fileNoExt = file;
else {
   fileNoExt = file.substring(0,file.lastIndexOf("."));
   fileExt  = file.substring(file.lastIndexOf(".")+1);
}

サーブレットのコンテキスト外でこのコードをテストすることをお勧めします。mainメソッドを使用して単純なJavaプログラムを作成し、ディレクトリでファイルを検索するだけで、ユーザー入力とフォーム情報を忘れることができます。いくつかのテストデータをハードコーディングして、ディレクトリを調べる方法と、ファイル名を処理するコードが正しく機能していることを確認します。

この他のスタックオーバーフローの質問は、ファイルのディレクトリを検索する方法を理解するのに役立つ場合があります。

于 2012-11-14T13:55:38.010 に答える
0

名前の最後のドットから最後まですべてを切り取らないでください:

final String baseName = fileName.substring(0, fileName.lastIndexOf("."));
于 2012-11-14T13:50:13.310 に答える