Advertisement
amitsen01ei

GenerateCsv.java

Feb 4th, 2024
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.10 KB | Source Code | 0 0
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.StandardOpenOption;
  5. import java.time.Duration;
  6. import java.time.Instant;
  7. import java.util.UUID;
  8. import java.util.stream.Collectors;
  9. import java.util.stream.IntStream;
  10.  
  11. import static fi.CheckedConsumer.tryConsume;
  12. import static common.IO.*;
  13.  
  14. final String outputPath = "/Users/amit.sen/Desktop/uuids-medium.csv";
  15.  
  16. void main() throws Throwable {
  17.     delete(outputPath);
  18.     var start = Instant.now();
  19.     generateUuidCsv(10000000, 5, outputPath);
  20.     println(STR."Time Taken \{Duration.between(start, Instant.now()).getSeconds()} seconds.");
  21.     var fileSizeInMB = new File(outputPath).length() / (1000.0D * 1000.0D);
  22.     var fileSizeInGB = fileSizeInMB / 1000.0D;
  23.     println(STR."Generated File Size \{fileSizeInGB < 0.0D ? STR."\{fileSizeInMB} MB" : STR."\{fileSizeInGB} GB"}");
  24. }
  25.  
  26. boolean delete(String path) {
  27.     return new File(path).delete();
  28. }
  29.  
  30. File generateUuidCsv(int rows, int itemPerRow, String path) throws IOException {
  31.  
  32.     final var outputPath = new File(path);
  33.     final var batchSize = 10000;
  34.  
  35.     if (outputPath.createNewFile()) {
  36.         println(STR."\{path.substring(path.lastIndexOf("/") + 1)} is created.");
  37.     } else {
  38.         println(STR."\{path.substring(path.lastIndexOf("/") + 1)} already exists. Skipping creation.");
  39.     }
  40.  
  41.     final var iterations = rows / batchSize;
  42.  
  43.     IntStream.rangeClosed(1, iterations == 0 ? rows : iterations)
  44.             .parallel()
  45.             .mapToObj(_ -> IntStream.rangeClosed(1, rows < batchSize ? 1 : batchSize)
  46.                     .mapToObj(_ -> createRow(itemPerRow)).collect(Collectors.joining())
  47.             ).forEach(tryConsume(content -> Files.write(outputPath.toPath(),
  48.                             content.getBytes(),
  49.                             StandardOpenOption.APPEND)
  50.                     )
  51.             );
  52.  
  53.     return outputPath;
  54. }
  55.  
  56. String createRow(int item) {
  57.     return STR."\{IntStream.rangeClosed(1, item)
  58.            .mapToObj(_ -> UUID.randomUUID().toString())
  59.            .collect(Collectors.joining(","))}\n";
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement