2017-11-02 15 views
-4

ファイル名にタイムスタンプのあるファイルがあります。私はこれらのファイルを何年ものファイル名であるタイムスタンプに基づいて年/月/日のフォルダに移動したいと思います。javaのタイムスタンプに基づいて年/月/日のフォルダにファイルを移動する方法

例:fileName = 2017-11-2_23-59-59(YYYY-mm-dd_HH-MM-SS)今私はこのファイルを2017フォルダに移動し、そのフォルダ内に11(月)フォルダとその2(日付)フォルダ内に移動し、フォルダが存在しない場合は作成します。

したがって、すべての日のフォルダは月のフォルダの中にあり、月のフォルダは年のフォルダの内側にある必要があります。これは私が必要とするフォルダ構造です。

誰も私がJavaでこれを達成する方法を手伝ってください。

+1

これはかなり簡単です。どちらの部分に苦労していますか? –

+2

ファイル名を解析し、存在しない場合はディレクトリを作成してからファイルを移動します。これらはすべて非常に簡単な作業です。しかし、Java IOのチュートリアルであるjavadocを読んで少し研究する必要があります。これは開発者の仕事の一部です。 –

+0

これは、1つのタイムゾーンで、またはUTCからの1つのオフセットでのみ発生しますか?これらのタイムスタンプのゾーンオフセットを知らないのは少し不快です。あるいは、それらはすべてUTCですか?そして、ファイルをUTCで日付別に保存することはできますか? –

答えて

0

これはあなたのための役に立つかもしれません:

String file = form.getFile().getOriginalFilename(); 
String[] dateParts = file.split("-"); 
String year = dateParts[0]; 
String month = dateParts[1]; 
String day = dateParts[2]; 
String UPLOADED_FOLDER = "C://Users//pandeyv//Desktop//"+year+"//"+month+"//"+day+"//"; 
File dir = new File(UPLOADED_FOLDER); 
if (!dir.exists()) 
    dir.mkdirs(); 

は、この情報がお役に立てば幸い!

0

何とかあなたのファイルにPathがあるとします。たぶん、Paths.get()を使って取得するかもしれません。または、ファイルを保持するフォルダ(ディレクトリ)へのパスを取得し、次にFiles.list()を使用して、フォルダ内の各ファイルへのパスを取得します。 Pathからファイルの名前を取得します(例:2017-11-2_23-59-59)。

ファイル名を日時に解析するには、DateTimeFormatterLocalDateTimeを使用することをお勧めします。 DateTimeFormatterのフォーマットパターンを指定する場合、大文字と小文字が区別されることに注意してください。 uuuu-M-d_H-mm-ssのようなパターンが必要です。あなた自身を微調整してください。

宛先フォルダに新しいPath(例:2017/11/02)を作成します。あなたの日時から、getYear,getMonthValuegetDayOfMonthという方法で年月日を取得してください。あるいはフォーマッタを使ってintではなく文字列として取得することもできます。すべての月と日付のフォルダに2桁の名前を付けることをお勧めします(9月は09、2月は02)。いくつかのケースでは、これはあなたが正しい年代順の並べ替えを得るのに役立ちます。しかし、あなたはあなたの要求を知っています、私はしません。再度、パスを構築するにはPaths.get()を使用します。次に、Files.createDirectories()を使用して、ネストされたフォルダがファイルシステムに作成されていることを確認します(既に存在する場合は、何もせずにパスを返します)。

Path.resolve()を使用して、ファイル名をフォルダパスに追加します。最後にFiles.move()はファイルを移動先のフォルダに移動します。

ハッピーコーディング。

+0

ありがとうございました。私はそれを完了した。 –

関連する問題