• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaのファイル名チェックについて)

Javaのファイル名チェックについて

このQ&Aのポイント
  • Java初心者です。ファイル名に日時の文字列が含まれているかどうかのチェック方法を教えてください。
  • 現在、C:/eclipse/workspaceフォルダ内に最後尾に"*****member.csv"がつくファイル名があるかどうかのチェック処理を行っています。
  • "member.csv"という固定文字ではなく、"*****yyyymmddHHMMSS.csv"というように日時の文字列がつくファイル名があるかどうかのチェックに変えたいです。どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#155524
noname#155524
回答No.4

質問に一貫性がないのですが、 1.member.csv はどこに行ったのか? 2.ファイル名の「*****」は固定なのか、任意の文字列なのか。 ****が任意の文字列と仮定した場合、 以下のコードでチェックできそうです。 public boolean checkFileName( String fileName ) { Pattern p = Pattern.compile( "^(.*)(\\d{14})\\.csv$" ); Matcher m = p.matcher( fileName ); if ( m.find() ) { String time = m.group( 2 ); SimpleDateFormat df = new SimpleDateFormat( "yyyyMMddHHmmss" ); df.setLenient( false ); ParsePosition pp = new ParsePosition( 0 ); Date d = df.parse( time, pp ); return d != null && pp.getIndex() == 14; } return false; }

norinbe
質問者

お礼

わかりづらい質問にも関わらずご回答いただき、有難うございました。 ソースを参考にさせていただいたところ、無事できました!!!! 本当に有難うございました。

その他の回答 (3)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3
norinbe
質問者

補足

上記URLを拝見させていただきました。 Java初心者に加え、上記サイトも初めて利用したため、あまりやり方がわからず、回答が締め切られてしまいました...。 ご回答を拝見させていただきましたが、なかなか理解が難しく、getFilesInDirectoryの内容を補足させていただきましたが、もし他によい方法があればご教授いただきたいのですが...。 お手数をおかけし、申し訳ございません。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

数字部分を抜き出して、Calendarで解析、 年月日、自分秒を比較するんでしょうね。 String part = ~ //ファイル名の数字部分 int yr = Integer.parseInt(part.substring( 0, 4)); int mo = Integer.parseInt(part.substring( 4, 6)); int dy = Integer.parseInt(part.substring( 6, 8)); int hr = ~以下略 int mt int sc GregorianCalendar gc = new GregorianCalendar(yr,mo,dy,hr,mt,sc); boolean ok = (( yr == gc.get(Calendar.YEAR) ) && ( mo == gc.get(Calendar.MONTH) ) -- 中略 -- && ( hr == gc.get(Calendar.HOUR_OF_DAY) ) -- 中略 -- && ( sc == gc.get(Calendar.SECOND) )); if ( ok )//日付として正しい else //日付として正しくない 例えば20111232とすると、カレンダ内は 2012/01/01と解析されますので、年月日が 一致しません。

norinbe
質問者

お礼

早速有難うございました。 参考にさせていただきます。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

正規表現を使うのでしょうね。 private static String PAT="\d{14}\\.csv$"; if ( strCSVFileName.matches(PAT) ) この場合、文字列が数字14桁と".csv"で 終わるという意味で、数字が日付や時刻と して正しいかどうかは分かりません。 http://java.sun.com/javase/ja/6/docs/ja/api/index.html?java/util/regex/Pattern.html http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#matches(java.lang.String)

norinbe
質問者

お礼

早速ご回答いただき、有難うございます。 重ねてのご質問で申し訳ございませんが、その数字が日時かどうかの判別は可能でしょうか? 宜しくお願いいたします。

関連するQ&A

専門家に質問してみよう