001package ca.bc.webarts.tools; 002 003import java.io.File; 004import java.io.FileWriter; 005// not necessary but saves headaches later if classes move 006import ca.bc.webarts.widgets.Util; 007 008public class SplitForBurn 009{ 010 private static String sourceDir = "/home/tgutwin/cdstage/filesToBurn"; 011 private static String splitsDir = "/home/tgutwin/cdstage/splitStagingDir"; 012 private static String splitsSubDir = "cd"; 013 private static String songListName = "SongList.txt"; 014 private static int cdCounter = 1; 015 private static int maxFiles = 250; 016 private static long maxCDSize = 645l*1024l*1000; 017 private static long currSize = 0l; 018 private static int currFiles = 0; 019 private static String [] currSongList = new String [254]; 020 021 private static void moveFile(File file) 022 { 023 if (file != null) 024 { 025 if (currSize < maxCDSize && currFiles < maxFiles) 026 { 027 System.out.print("Moving "+file.getAbsolutePath() + " --> "); 028 System.out.println(splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter)); 029 currSize+=file.length(); 030 Util.moveFile(file.getAbsolutePath(), 031 splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter)); 032 currSongList[currFiles++] = file.getName(); 033 034 System.out.print(" Size = "+currSize); 035 System.out.println(" files = "+currFiles); 036 } 037 else 038 { 039 // Save the dirlist to the last cd dir 040 try 041 { 042 FileWriter songListWriter = new FileWriter(splitsDir + File.separator + 043 splitsSubDir + String.valueOf(cdCounter) + File.separator + 044 songListName); 045 for (int i = 0; i < currFiles; i++) 046 songListWriter.write(currSongList[i] + System.getProperty("line.separator")); 047 songListWriter.close(); 048 } 049 catch (Exception ex) 050 { 051 System.out.println("Cannot Save Song List for "+ 052 splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter)); 053 } 054 055 // create a new dir and move 056 try 057 { 058 File currSplitsDir = new File(splitsDir+ File.separator + 059 splitsSubDir + String.valueOf(cdCounter++)); 060 if (currSplitsDir != null) 061 { 062 System.out.println("Creating dir "+currSplitsDir.getAbsolutePath()); 063 currSplitsDir.mkdir(); 064 currFiles = 0; 065 currSize = 0; 066 System.out.print("Moving "+file.getAbsolutePath() + " --> "); 067 System.out.println(currSplitsDir.getAbsolutePath()); 068 currSize+=file.length(); 069 Util.moveFile(file.getAbsolutePath(), currSplitsDir.getAbsolutePath()); 070 currSongList[currFiles++] = file.getName(); 071 System.out.println(" Size = "+currSize); 072 System.out.println(" files = "+currFiles); 073 } 074 075 } 076 catch (Exception ex) 077 { 078 System.out.println("Cannot Move File: "); 079 if (file != null) 080 System.out.println(file.getAbsolutePath() + " to "+splitsDir + 081 File.separator + splitsSubDir +String.valueOf(cdCounter)); 082 ex.printStackTrace(); 083 } 084 } 085 } 086 } 087 088 089 /** 090 * The main program method for this class 091 * 092 * @param args The command line arguments 093 */ 094 public static void main(String[] args) 095 { 096 File srcDir = new File(sourceDir); 097 if (srcDir != null) 098 { 099 String[] files = srcDir.list(); 100 try 101 { 102 java.util.Arrays.sort((Object[])files); 103 } 104 catch (Exception ex) 105 { 106 System.out.println("Cannot Sort Files "); 107 } 108 File tempFile; 109 110 //loop through all the files in the dir 111 for (int i = 0; i < files.length; i++) 112 { 113 tempFile = new File(sourceDir + File.separator + files[i]); 114 moveFile(tempFile); 115 } 116 } 117 } 118} 119