Snippet Java

With snippet Java, you can free your mind

  1. System.err, System.out print with UTF-8

    System.setErr(new PrintStream(System.err, true, "UTF-8"));
    System.setOut(new PrintStream(System.out, true, "UTF-8"));
    
  2. Use FileWriterWithEncoding write/append to file with Encoding

    FileWriterWithEncoding out = new FileWriterWithEncoding(filePath, charSet);
    out.write(header);
    out.close();
    out = new FileWriterWithEncoding(filePath, charSet, true);
    out.append(line + "\n");
    out.close();
    
  3. Read all content file in a folder

    File folder = new File(inputFolder);
    for (File fileEntry : folder.listFiles()) {
      if (!fileEntry.isDirectory()) {
        in = new BufferedReader(new InputStreamReader(new FileInputStream(fileEntry), "UTF8"));
        out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), charSet));
      }
    }
    
  4. Convert file from UTF-8 to SJIS

    public static void convertFileUTF8ToSJIS(File inputFile, File outputFile) {
      String header = "対象日付,①,①時間,②,②時間,③,③時間,④,④時間,⑤,⑤時間,⑥,⑥時間,⑦,⑦時間,⑧,⑧時間,⑨,⑨時間,⑩,⑩時間,⑪,⑪時間,⑫,⑫時間,⑬,⑬時間,⑭,⑭時間,⑮,⑮時間,⑯,⑯時間,⑰,⑰時間,⑱,⑱時間,⑲,⑲時間,⑳,⑳時間,有料サーチの課金額,CPM課金額,CPC課金額";
      String inputContent = FileUtils.readFileToString(inputFile, "UTF-8");
      // MS932 is superset of shift_jis, ms_kanji, csshiftjis, windows-31j, cswindows31j
      FileUtils.write(outputFile, header + "\n", "MS932"); // org.apache.commons.io.FileUtils
      FileUtils.write(outputFile, inputContent, "MS932", true);
    }
    
  5. Remove double quotes " begin and end of string

    public static String removeDoubleQuote(String string) {
      return string.replaceAll("^\"|\"$", "");;
    }
    
  6. Using placeholder in string and replace

    Map valuesMap = HashMap();
    valuesMap.put("animal", "quick brown fox");
    valuesMap.put("target", "lazy dog");
    // set a default value for unresolved variables, default value delimiter is ':-'
    String templateString = "The ${animal} jumped over the ${target}. ${undefined.number:-1234567890}.";
    String resolvedString = StrSubstitutor.replace(templateString, valuesMap);
    // resolvedString => The quick brown fox jumped over the lazy dog. 1234567890.
    
  7. Read all InputStream to a String

    public String loadTextFile(InputStream inputStream) throws IOException {
      return IOUtils.toString(inputStream, "UTF8"); // org.apache.commons.io.IOUtils
    }
    
  8. Get name of current method in Java

    String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
    
  9. Convert Java util.Date to sql.Date

    java.util.Date utilDate = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    
  10. Java Fast File Copy using NIO

    public static void fileCopy(File in, File out) throws IOException {
      FileChannel inChannel = new FileInputStream(in).getChannel();
      FileChannel outChannel = new FileOutputStream(out).getChannel();
      try {
        // inChannel.transferTo(0, inChannel.size(), outChannel);
        // original -- apparently has trouble copying large files on Windows
        // magic number for Windows, 64Mb - 32Kb)
        int maxCount = (64 * 1024 * 1024) - (32 * 1024);
        long size = inChannel.size();
        long position = 0;
        while (position < size) {
          position += inChannel.transferTo(position, maxCount, outChannel);
        }
      } finally {
        if (inChannel != null) {
          inChannel.close();
        }
        if (outChannel != null) {
          outChannel.close();
        }
      }
    }
    
  11. Create Thumbnail of an image in Java

    private void createThumbnail(String filename, int thumbWidth,
        int thumbHeight, int quality, String outFilename)
        throws InterruptedException, FileNotFoundException, IOException {
      // load image from filename
      Image image = Toolkit.getDefaultToolkit().getImage(filename);
      MediaTracker mediaTracker = new MediaTracker(new Container());
      mediaTracker.addImage(image, 0);
      mediaTracker.waitForID(0);
      // use this to test for errors at this point:
      // System.out.println(mediaTracker.isErrorAny());
      // determine thumbnail size from WIDTH and HEIGHT
      double thumbRatio = (double) thumbWidth / (double) thumbHeight;
      int imageWidth = image.getWidth(null);
      int imageHeight = image.getHeight(null);
      double imageRatio = (double) imageWidth / (double) imageHeight;
      if (thumbRatio < imageRatio) {
        thumbHeight = (int) (thumbWidth / imageRatio);
      } else {
        thumbWidth = (int) (thumbHeight * imageRatio);
      }
      // draw original image to thumbnail image object and
      // scale it to the new size on-the-fly
      BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
      Graphics2D graphics2D = thumbImage.createGraphics();
      graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
      graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
      // save thumbnail image to outFilename
      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
      JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
      quality = Math.max(0, Math.min(quality, 100));
      param.setQuality((float) quality / 100.0f, false);
      encoder.setJPEGEncodeParam(param);
      encoder.encode(thumbImage);
      out.close();
    }
    
  12. Creating JSON data in Java

    import org.json.JSONObject;
    ...
    JSONObject json = new JSONObject();
    json.put("city", "Mumbai");
    json.put("country", "India");
    ...
    String output = json.toString();
    ...
    
  13. PDF Generation in Java using iText JAR

    import com.lowagie.text.Document;
    import com.lowagie.text.Paragraph;
    import com.lowagie.text.pdf.PdfWriter;
    public class GeneratePDF {
      public static void main(String[] args) {
        try {
          OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
          Document document = new Document();
          PdfWriter.getInstance(document, file);
          document.open();
          document.add(new Paragraph("Hello Kiran"));
          document.add(new Paragraph(new Date().toString()));
          document.close();
          file.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    
  14. HTTP Proxy setting in Java

    System.getProperties().put("http.proxyHost", "someProxyURL");
    System.getProperties().put("http.proxyPort", "someProxyPort");
    System.getProperties().put("http.proxyUser", "someUserName");
    System.getProperties().put("http.proxyPassword", "somePassword");
    
  15. Java Singleton example

    public class SimpleSingleton {
      private static SimpleSingleton singleInstance =  new SimpleSingleton();
      //Marking default constructor private
      //to avoid direct instantiation.
      private SimpleSingleton() {
      }
      //Get instance for class SimpleSingleton
      public static SimpleSingleton getInstance() {
        return singleInstance;
      }
    }
    
    public enum SimpleSingleton {
      INSTANCE;
      public void doSomething() {
      }
    }
    // call the method from Singleton
    SimpleSingleton.INSTANCE.doSomething();
    
  16. Capture screen shots in Java

    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;
    import java.io.File;
    ...
    public void captureScreen(String fileName) throws Exception {
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      Rectangle screenRectangle = new Rectangle(screenSize);
      Robot robot = new Robot();
      BufferedImage image = robot.createScreenCapture(screenRectangle);
      ImageIO.write(image, "png", new File(fileName));
    }
    ...
    
  17. Files-Directory listing in Java

    File dir = new File("directoryName");
    String[] children = dir.list();
    if (children == null) {
      // Either dir does not exist or is not a directory
    } else {
      for (int i = 0; i < children.length; i++) {
        // Get filename of file or directory
        String filename = children[i];
      }
    }
    // It is also possible to filter the list of returned files.
    // This example does not return any files that start with `.'.
    FilenameFilter filter = new FilenameFilter() {
      public boolean accept(File dir, String name) {
        return !name.startsWith(".");
      }
    };
    children = dir.list(filter);
    // The list of files can also be retrieved as File objects
    File[] files = dir.listFiles();
    // This filter only returns directories
    FileFilter fileFilter = new FileFilter() {
      public boolean accept(File file) {
        return file.isDirectory();
      }
    };
    files = dir.listFiles(fileFilter);
    
  18. Creating ZIP and JAR Files in Java

    public class ZipIt {
      public static void main(String args[]) throws IOException {
        if (args.length < 2) {
          System.err.println("usage: java ZipIt Zip.zip file1 file2 file3");
          System.exit(-1);
        }
        File zipFile = new File(args[0]);
        if (zipFile.exists()) {
          System.err.println("Zip file already exists, please try another");
          System.exit(-2);
        }
        FileOutputStream fos = new FileOutputStream(zipFile);
        ZipOutputStream zos = new ZipOutputStream(fos);
        int bytesRead;
        byte[] buffer = new byte[1024];
        CRC32 crc = new CRC32();
        for (int i=1, n=args.length; i < n; i++) {
          String name = args[i];
          File file = new File(name);
          if (!file.exists()) {
            System.err.println("Skipping: " + name);
            continue;
          }
          BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
          crc.reset();
          while ((bytesRead = bis.read(buffer)) != -1) {
            crc.update(buffer, 0, bytesRead);
          }
          bis.close();
          // Reset to beginning of input stream
          bis = new BufferedInputStream(new FileInputStream(file));
          ZipEntry entry = new ZipEntry(name);
          entry.setMethod(ZipEntry.STORED);
          entry.setCompressedSize(file.length());
          entry.setSize(file.length());
          entry.setCrc(crc.getValue());
          zos.putNextEntry(entry);
          while ((bytesRead = bis.read(buffer)) != -1) {
            zos.write(buffer, 0, bytesRead);
          }
          bis.close();
        }
        zos.close();
      }
    }
    
  19. Parsing / Reading XML file in Java

    <?xml version="1.0"?>
    <students>
      <student>
        <name>John</name>
        <grade>B</grade>
        <age>12</age>
      </student>
      <student>
        <name>Mary</name>
        <grade>A</grade>
        <age>11</age>
      </student>
      <student>
        <name>Simon</name>
        <grade>A</grade>
        <age>18</age>
      </student>
    </students>
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    public class XMLParser {
      public void getAllUserNames(String fileName) {
        try {
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          DocumentBuilder db = dbf.newDocumentBuilder();
          File file = new File(fileName);
          if (file.exists()) {
            Document doc = db.parse(file);
            Element docEle = doc.getDocumentElement();
            // Print root element of the document
            System.out.println("Root element of the document: " + docEle.getNodeName());
            NodeList studentList = docEle.getElementsByTagName("student");
            // Print total student elements in document
            System.out.println("Total students: " + studentList.getLength());
            if (studentList != null && studentList.getLength() > 0) {
              for (int i = 0; i < studentList.getLength(); i++) {
                Node node = studentList.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                  System.out.println("=====================");
                  Element e = (Element) node;
                  NodeList nodeList = e.getElementsByTagName("name");
                  System.out.println("Name: " + nodeList.item(0).getChildNodes().item(0).getNodeValue());
                  nodeList = e.getElementsByTagName("grade");
                  System.out.println("Grade: " + nodeList.item(0).getChildNodes().item(0).getNodeValue());
                  nodeList = e.getElementsByTagName("age");
                  System.out.println("Age: " + nodeList.item(0).getChildNodes().item(0).getNodeValue());
                }
              }
            } else {
                System.exit(1);
            }
          }
        } catch (Exception e) {
          System.out.println(e);
        }
      }
      public static void main(String[] args) {
        XMLParser parser = new XMLParser();
        parser.getAllUserNames("c:\\test.xml");
      }
    }
    
  20. Convert Array to Map in Java

    import org.apache.commons.lang.ArrayUtils;
    public class Main {
      public static void main(String[] args) {
        String[][] countries = { { "United States", "New York" },
            { "United Kingdom", "London" },
            { "Netherland", "Amsterdam" }, { "Japan", "Tokyo" },
            { "France", "Paris" } };
        Map countryCapitals = ArrayUtils.toMap(countries);
        System.out.println("Capital of Japan is " + countryCapitals.get("Japan"));
        System.out.println("Capital of France is " + countryCapitals.get("France"));
      }
    }
    
  21. Sort a Map<Key, Value> by Value in Java

    public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> unsortMap) {
      List<Map.Entry<K, V>> processList = new LinkedList<>(unsortMap.entrySet());
      Collections.sort(processList, new Comparator<Map.Entry<K, V>>() {
        @Override
        public int compare(Map.Entry<K, V> obj1, Map.Entry<K, V> obj2) {
          return (obj1.getValue()).compareTo(obj2.getValue());
        }
      });
      Map<K, V> sortedMap = new LinkedHashMap<>();
      for (Map.Entry<K, V> entry : processList) {
        sortedMap.put(entry.getKey(), entry.getValue());
      }
      return sortedMap;
    }
    
  22. Send Email using Java

    public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException {
      boolean debug = false;
      // Set the host smtp address
      Properties props = new Properties();
      props.put("mail.smtp.host", "smtp.example.com");
      // create some properties and get the default Session
      Session session = Session.getDefaultInstance(props, null);
      session.setDebug(debug);
      // create a message
      Message msg = new MimeMessage(session);
      // set the from and to address
      InternetAddress addressFrom = new InternetAddress(from);
      msg.setFrom(addressFrom);
      InternetAddress[] addressTo = new InternetAddress[recipients.length];
      for (int i = 0; i < recipients.length; i++) {
        addressTo[i] = new InternetAddress(recipients[i]);
      }
      msg.setRecipients(Message.RecipientType.TO, addressTo);
      // Optional : You can also set your custom headers in the Email if you
      // Want
      msg.addHeader("MyHeaderName", "myHeaderValue");
      // Setting the Subject and Content Type
      msg.setSubject(subject);
      msg.setContent(message, "text/plain");
      Transport.send(msg);
    }
    
  23. Send HTTP request & fetching data using Java

    import java.net.URL;
    public class Main {
      public static void main(String[] args)  {
        try {
          URL my_url = new URL("http://localhost/coloza/snippet-java/");
          BufferedReader br = new BufferedReader(new InputStreamReader(my_url.openStream()));
          String strTemp = "";
          while(null != (strTemp = br.readLine())) {
          System.out.println(strTemp);
        } catch (Exception ex) {
          ex.printStackTrace();
        }
      }
    }
    
  24. Resize an Array in Java

    /**
     * Reallocates an array with a new size, and copies the contents
     * of the old array to the new array.
     * @param oldArray  the old array, to be reallocated.
     * @param newSize   the new array size.
     * @return          A new array with the same contents.
     */
    private static Object resizeArray(Object oldArray, int newSize) {
      int oldSize = java.lang.reflect.Array.getLength(oldArray);
      Class elementType = oldArray.getClass().getComponentType();
      Object newArray = java.lang.reflect.Array.newInstance(elementType, newSize);
      int preserveLength = Math.min(oldSize, newSize);
      if (preserveLength > 0)
        System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
      return newArray;
    }
    // Test routine for resizeArray().
    public static void main(String[] args) {
      int[] a = { 1, 2, 3 };
      a = (int[]) resizeArray(a, 5);
      a[3] = 4;
      a[4] = 5;
      for (int i = 0; i < a.length; i++)
        System.out.println(a[i]);
    }
    
  25. POI - Excel Copy Formula Relative Row Column

    /**
     * except his solution manages only cell references,
     * as opposed to area references (it won't work for =SUM(A1:B8) for instance)
     */
    private void copyFormula(Sheet sheet, Cell org, Cell dest) {
      if (org == null || dest == null || sheet == null
            || org.getCellType() != Cell.CELL_TYPE_FORMULA)
        return;
      if (org.isPartOfArrayFormulaGroup()) return;
      String formula = org.getCellFormula();
      int shiftRows = dest.getRowIndex() - org.getRowIndex();
      int shiftCols = dest.getColumnIndex() - org.getColumnIndex();
      XSSFEvaluationWorkbook workbookWrapper =
          XSSFEvaluationWorkbook.create((XSSFWorkbook) sheet.getWorkbook());
      Ptg[] ptgs = FormulaParser.parse(formula, workbookWrapper, FormulaType.CELL,
          sheet.getWorkbook().getSheetIndex(sheet));
      for (Ptg ptg : ptgs) {
        if (ptg instanceof RefPtgBase) // base class for cell references
        {
          RefPtgBase ref = (RefPtgBase) ptg;
          if (ref.isColRelative())
              ref.setColumn(ref.getColumn() + shiftCols);
          if (ref.isRowRelative())
              ref.setRow(ref.getRow() + shiftRows);
        } else if (ptg instanceof AreaPtg) // base class for range references
        {
            AreaPtg ref = (AreaPtg) ptg;
            if (ref.isFirstColRelative())
                ref.setFirstColumn(ref.getFirstColumn() + shiftCols);
            if (ref.isLastColRelative())
                ref.setLastColumn(ref.getLastColumn() + shiftCols);
            if (ref.isFirstRowRelative())
                ref.setFirstRow(ref.getFirstRow() + shiftRows);
            if (ref.isLastRowRelative())
                ref.setLastRow(ref.getLastRow() + shiftRows);
        }
      }
      formula = FormulaRenderer.toFormulaString(workbookWrapper, ptgs);
      dest.setCellFormula(formula);
    }
    
  26. BCrypt - Generate Secure Password Hash

    // Hash a password for the first time
    String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
    // gensalt's log_rounds parameter determines the complexity the work factor is 2**log_rounds, and the default is 10
    String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12));
    // Check that an unencrypted password matches one that has previously been hashed
    boolean matched = BCrypt.checkpw(candidate, hashed);
    
  27. Write ResultSet as CSV Gzip File

    Connection conn = null;
    Statement stmt = null;
    try (CSVWriter writer = new CSVWriter(new OutputStreamWriter(new GZIPOutputStream(new FileOutputStream(csvGzippedFile)), "UTF-8"))) {
      ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM tbl");
      int rowCount = 0;
      if (rs.next()) {
        rowCount = rs.getInt(1);
      }
      rs.close();
      for (int i = 0; i < rowCount; i += CONFIG.QUERY_STEP) {
        String sql = StringUtils.join("SELECT * FROM tbl LIMIT " + i, "," + CONFIG.QUERY_STEP);
        rs = stmt.executeQuery(sql);
        writer.writeAll(rs, false);
        rs.close();
      }
    } finally {
      stmt.close();
      conn.close();
    }
    
  28. Using wsimport to generate Web Service Client (JAX-WS)

    # -Xnocompile: do not compile generated Java files
    # -p : specifying a target package, overrides any wsdl and schema binding customization for package name and the default package name algorithm defined in the specification
    wsimport -Xnocompile -p jp.yahooapis.im.V5.ReportDefinitionService https://location.im.yahooapis.jp/services/V5.1/ReportDefinitionService?wsdl
    wsimport -Xnocompile -p jp.yahooapis.im.V5.ReportService https://location.im.yahooapis.jp/services/V5.1/ReportService?wsdl
    
  29. Dumping SOAP messages on client

    # in JAX-WS, you can monitor the request and response messages without changing the client
    # pass the system property (VM argument):
    # for java 6:
    #     com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true
    #     com.sun.xml.ws.transport.http.HttpAdapter.dump=true
    # for java 7:
    #     com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
    #     com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true
    java -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true -jar myprogram.jar ToBeTrackedClass
    
    // or changing client
    System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
    System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
    
  30. Heap and CPU Profiling

    java -agentlib:hprof ToBeProfiledClass
    java -agentlib:hprof=heap=sites ToBeProfiledClass
    java -XX:HeapDumpPath=./java_pid.hprof ToBeProfiledClass
    
  31. Debugging SSL/TLS Connections

    java -Djavax.net.debug=all
    
    Or
    System.setProperty("javax.net.debug", "all");
    

Comments

Popular posts from this blog

Reduce TIME_WAIT Socket Connections