title: Java: Read all .txt file from folder then move to new folder
body: <p>Help, i need to read every .txt file in a folder then copy/move it all to the new folder.
  But, i need to copy the text inside every .txt file and create them a variable (1 .txt file to 1 variable). I only got this code that only can read 1 .txt file then copying the text inside the .txt file to another .txt file in another folder and it creating the text inside .txt into variable (aLine)...</p>
  
  <pre><code>public static void main(String[] args) throws IOException {
  
      String source = File.separator + "C:\\Users\\NN\\Documents\\Test1\\Source.txt";
      String dest = File.separator + "C:\\Users\\NN\\Documents\\Test2\\Empty.txt";
  
      File dir = new File(".");
  
      File fin = new File(source);
      FileInputStream fis = new FileInputStream(fin);
      BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  
      FileWriter fstream = new FileWriter(dest, true);
      BufferedWriter out = new BufferedWriter(fstream);
  
      String aLine = null;
      while ((aLine = in.readLine()) != null) {
          System.out.println(aLine);
          out.write(aLine);
          out.newLine();
      }
  
      in.close();
  
      out.close();
  }
  </code></pre>
  
  <p>dear <strong>cybi</strong>,
  pls look at my code bellow:</p>
  
  <pre><code>import java.io.File;
  import java.io.IOException;
  import java.nio.file.DirectoryStream;
  import java.nio.file.FileSystems;
  import java.nio.file.Files;
  import java.nio.file.Path;
  import java.nio.file.Paths;
  import java.nio.file.StandardCopyOption;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import javax.jms.Connection;
  import javax.jms.ConnectionFactory;
  import javax.jms.DeliveryMode;
  import javax.jms.Destination;
  import javax.jms.JMSException;
  import javax.jms.MessageProducer;
  import javax.jms.Session;
  import javax.jms.TextMessage;
  import org.apache.activemq.ActiveMQConnection;
  import org.apache.activemq.ActiveMQConnectionFactory;
  
  public class NewMass {
      private ConnectionFactory factory = null;
      private Connection connection = null;
      private Session session = null;
      private Destination destination = null;
      private MessageProducer producer = null;
  
      File dir = new File(".");
  
      String aLine = null;
  
      static Map&lt;Path, List&lt;String&gt;&gt; contentOfFiles;
  
      public static void main(String[] args) throws IOException {
          String source = "C:\\Users\\NN\\Documents\\Test1";
          String target = "C:\\Users\\NN\\Documents\\Test2";
  
          List&lt;Path&gt; filePaths = filePathsList(source); // Step 1: get all files from a directory
          List&lt;Path&gt; filteredFilePaths = filter(filePaths); // Step 2: filter by ".txt"
  //        Map&lt;Path, List&lt;String&gt;&gt; contentOfFiles = getContentOfFiles(filteredFilePaths); // Step 3: get content of files
          contentOfFiles = getContentOfFiles(filteredFilePaths); // Step 3: get content of files
          NewMass prdcr = new NewMass();
          move(filteredFilePaths, target); // Step 4: move files to destination
          printToConsole(contentOfFiles);
      }
  
      public NewMass() throws IOException {
          try {
              factory = new ActiveMQConnectionFactory(
              ActiveMQConnection.DEFAULT_BROKER_URL);
              connection = factory.createConnection();
              connection.start();
              session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
              destination = session.createQueue("TestQueue");
              producer = session.createProducer(destination);
              producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
              //String text = in.readinLine();
              String text = contentOfFiles.get(filePath);
              TextMessage message = session.createTextMessage(text);
              producer.send(message);
              System.out.println("Sent: " + message.getText());
  
              while ((aLine = contentOfFiles.get(filePath)) != null) {
                  message = session.createTextMessage(aLine);
                  System.out.println("Sent message: "+  message.getText());
                  producer.send(message);
  
                  }
          }
          catch (JMSException e) {
              e.printStackTrace();
          }
      }
  
      public static List&lt;Path&gt; filePathsList(String directory) throws IOException {
          List&lt;Path&gt; filePaths = new ArrayList&lt;&gt;();
          DirectoryStream&lt;Path&gt; directoryStream = Files.newDirectoryStream(FileSystems.getDefault().getPath(directory));
          for (Path path : directoryStream) {
              filePaths.add(path);
          }
          return filePaths;
      }
  
      private static List&lt;Path&gt; filter(List&lt;Path&gt; filePaths) {
          List&lt;Path&gt; filteredFilePaths = new ArrayList&lt;&gt;();
          for (Path filePath : filePaths) {
              if (filePath.getFileName().toString().endsWith(".txt")) {
                  filteredFilePaths.add(filePath);
              }
          }
          return filteredFilePaths;
      }
  
      private static Map&lt;Path, List&lt;String&gt;&gt; getContentOfFiles(List&lt;Path&gt; filePaths) throws IOException {
          Map&lt;Path, List&lt;String&gt;&gt; contentOfFiles = new HashMap&lt;&gt;();
          for (Path filePath : filePaths) {
              contentOfFiles.put(filePath, new ArrayList&lt;&gt;());
              Files.readAllLines(filePath).forEach(contentOfFiles.get(filePath)::add);
          }
          return contentOfFiles;
      }
  
      private static void move(List&lt;Path&gt; filePaths, String target) throws IOException {
          Path targetDir = FileSystems.getDefault().getPath(target);
          if (!Files.isDirectory(targetDir)) {
              targetDir = Files.createDirectories(Paths.get(target));
          }
          for (Path filePath : filePaths) {
              System.out.println("Moving " + filePath.getFileName() + " to " + targetDir.toAbsolutePath());
              Files.move(filePath, Paths.get(target, filePath.getFileName().toString()), StandardCopyOption.ATOMIC_MOVE);
          }   
      }
  
      private static void printToConsole(Map&lt;Path, List&lt;String&gt;&gt; contentOfFiles) {
          System.out.println("Content of files:");
          contentOfFiles.forEach((k,v) -&gt; v.forEach(System.out::println));
      }
  }
  </code></pre>