Advertisement
Howtocode

[Kotlin] Move files to specified folders

Mar 14th, 2015
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.89 KB | None | 0 0
  1. /* This short code was used to move downloaded images from folders marked by (1), (2), (3) or " " to project folders */
  2.  
  3. public class FileManager(var source : String, var dest : String) {
  4.  
  5.     val destDirs : ArrayList<String>
  6.  
  7.     {
  8.         destDirs = arrayListOf("drawable-xxxhdpi", "drawable-xxhdpi", "drawable-xhdpi", "drawable-hdpi")
  9.         makeValid()
  10.     }
  11.  
  12.     public fun doWork() {
  13.         readDirectory(File(source))
  14.     }
  15.  
  16.     private fun readDirectory(dir : File) {
  17.         for (file in dir.listFiles()) {
  18.             if (file.isDirectory()) readDirectory(file)
  19.             else if (file.getName().endsWith(".png")) moveFile(file)
  20.         }
  21.     }
  22.  
  23.     private fun moveFile(file : File) {
  24.         val istream = FileInputStream(file)
  25.         val ostream = FileOutputStream(getDestPath(file))
  26.         val buffer = ByteArray(1024)
  27.         var read : Int
  28.         while (true) {
  29.             read = istream.read(buffer)
  30.             if (read == -1) break;
  31.             else ostream.write(buffer, 0, read)
  32.         }
  33.         ostream.flush()
  34.         ostream.close()
  35.         istream.close()
  36.     }
  37.  
  38.     private fun getDestPath(file : File) : String {
  39.         val fileDir = file.getParent()
  40.         var result = dest
  41.         for (name in destDirs) {
  42.             if (fileDir.contains("(${destDirs.indexOf(name)})")) {
  43.                 return result + File.separator + name + File.separator + file.getName()
  44.             }
  45.         }
  46.         return result + File.separator + destDirs[0] + File.separator + file.getName()
  47.     }
  48.  
  49.     private fun makeValid() {
  50.         if (dest[dest.length()-1].equals(File.separator))
  51.             dest = dest.substring(0, dest.lastIndexOf(File.separator)-1)
  52.         for (name in destDirs) {
  53.             val folder = File(dest + File.separator + name)
  54.             if (!folder.exists()) {
  55.                 folder.mkdir()
  56.             }
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement