File Archivierung

Immi

Mitglied
Hi

Ich muss bei einem Ordner, alle Dateien überprüfen, wann das diese zuletzt geändert wurden. Dann muss ich diese je nach änderungsdatum in einen Archiv-Ordner verschieben, falls dieser noch nicht existiert sollte er erstellt werden.

Also, wenn eine Datei am 05.04.2005 das letzte mal geändert wurde, dann kommt die in den ordner: /archiv/2005/04/05


Code:
public class FileMove
{
  private String mYear;
  private String mMonth;
  private String dDay;

  public FileMove(String aPath)
  {
    File[] mAllFiles = new File("aPath").listFiles();

    for (int i = 0; i < mAllFiles.length; i++)
    {
      File mFile = mAllFiles[i];
      long mFileLastModified = mFile.lastModified();

      Date mFileDate = new Date(mFileLastModified);

      Calendar c = Calendar.getInstance();
      c.setTime(mFileDate);

      int day = c.get(Calendar.DAY_OF_MONTH);
      int month = c.get(Calendar.MONTH);
      int year = c.get(Calendar.YEAR);

      String mDay = String.valueOf(day);
      String mMonth = String.valueOf(month);
      String mYear = String.valueOf(year);

    }

    String mArchivPath = "/Archiv/" + mYear + "/" + mMonth + "/" + dDay;
    new File(mArchivPath).mkdirs();
    new File(aPath).renameTo(); //hier hab ich irgendwie eine STOP.. ich komme einfach nicht weiter :/

  }
}

new File(aPath).renameTo(/*wtf kommt hier rein*/);

Da ich den Code hier leider nicht testen kann, wäre ich euch allen sehr verbunden, wenn ihr mir sagen könntet ob das so funktionieren würde?
 
Hallo,

hat so nicht funktioniert. Hab deinen Code etwas umgeschrieben:
Code:
import java.io.File;
    import java.util.*;
    
    public class FileMove
    {
    
      public FileMove(String aPath)
      {
    	File[] mAllFiles = new File(aPath).listFiles();
     
    	for (int i = 0; i < mAllFiles.length; i++)
    	{
    	  File mFile = mAllFiles[i];
    	  if (mFile.isFile())
    	  {
    		  long mFileLastModified = mFile.lastModified();
    	
    		  Date mFileDate = new Date(mFileLastModified);
    	
    		  Calendar c = Calendar.getInstance();
    		  c.setTime(mFileDate);
    	
    		  int day = c.get(Calendar.DAY_OF_MONTH);
    		  int month = c.get(Calendar.MONTH);
    		  int year = c.get(Calendar.YEAR);
    		  String mDay = String.valueOf(day);
    		  String mMonth = String.valueOf(month+1);
    		  String mYear = String.valueOf(year);
    		  
  		 String mArchivPath = aPath + &quot;Archiv/&quot; + mYear + &quot;/&quot; + mMonth + &quot;/&quot; + mDay + &quot;/&quot;;
    		  if (!new File(mArchivPath).exists())
    			  new File(mArchivPath).mkdirs();
    		  String newFile = mArchivPath + mFile.getName();
    		  mFile.renameTo(new File(newFile));
    	  }
    	}
      }
    }
 
Zuletzt bearbeitet:
eine kleine frage hab ich noch:

ich muss nur die dateien verschieben, die ein .ok am ende haben. also die datei könnte so aussehen:

Code:
IRLAP03001106676154143PMP0.xml.ok

jetzt will ich den dateinamen in einen string einlesen und den string spliten. am besten splite ich bei dem punkt. da der dateiname allerdings 2 punkte hat, weiss ich nicht genau wie man das macht..

P.S.: mit:
Code:
String mIsOk = mFile.getName();
kommt man schon auf den dateinamen, oder?

vielen dank bereits für eure antworten.
 
Zurück