20 very useful Java code snippets for Java Developers

Following are few very useful Java code snippets for Java developers. Few of them are written by me and few are taken from other code reference. Feel free to comment about the code and also add your code snippet.


1. Converting Strings to int and int to String

String a = String.valueOf(2);   //integer to numeric string
int i = Integer.parseInt(a); //numeric string to an int

2. Append text to file in Java

Updated: Thanks Simone for pointing to exception. I have changed the code.
BufferedWriter out = null;
try {
    out = new BufferedWriter(new FileWriter(”filename”, true));
    out.write(”aString”);
} catch (IOException e) {
    // error processing code
} finally {
    if (out != null) {
        out.close();
    }
}

3. Get name of current method in Java

String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();

4. Convert String to Date in Java

java.util.Date = java.text.DateFormat.getDateInstance().parse(date String);
or
SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" );
Date date = format.parse( myString );

5. Connecting to Oracle using Java JDBC

public class OracleJdbcTest
{
    String driverClass = "oracle.jdbc.driver.OracleDriver";
    Connection con;
     
    public void init(FileInputStream fs) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException
    {
        Properties props = new Properties();
        props.load(fs);
        String url = props.getProperty("db.url");
        String userName = props.getProperty("db.user");
        String password = props.getProperty("db.password");
        Class.forName(driverClass);
        con=DriverManager.getConnection(url, userName, password);
    }
     
    public void fetch() throws SQLException, IOException
    {
        PreparedStatement ps = con.prepareStatement("select SYSDATE from dual");
        ResultSet rs = ps.executeQuery();
         
        while (rs.next())
        {
            // do the thing you do
        }
        rs.close();
        ps.close();
    }
    public static void main(String[] args)
    {
        OracleJdbcTest test = new OracleJdbcTest();
        test.init();
        test.fetch();
    }
}

6. Convert Java util.Date to sql.Date


This snippet shows how to convert a java util Date into a sql Date for use in databases.
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

7. 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();
            }
        }
    }

8. 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();
    }

9. 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();
...

10. PDF Generation in Java using iText JAR



import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
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();
        }
    }
}

11. 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");

12. 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;
    }
}
One more implementation of Singleton class. Thanks to Ralph and Lukasz Zielinski for pointing this out.
public enum SimpleSingleton {
    INSTANCE;
    public void doSomething() {
    }
}
//Call the method from Singleton:
SimpleSingleton.INSTANCE.doSomething();

13. 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));
}
...

14. 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);

15. Creating ZIP and JAR Files in Java

import java.util.zip.*;
import java.io.*;
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();
    }
}

16. Parsing / Reading XML file in Java

Sample XML file.
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>
Java code to parse above XML.
package net.viralpatel.java.xmlparser;
import java.io.File;
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");
    }
}

17. Convert Array to Map in Java

import java.util.Map;
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"));
  }
}

18. Send Email using Java

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
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);
}

19. Send HTTP request & fetching data using Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class Main {
    public static void main(String[] args)  {
        try {
            URL my_url = new URL("http://www.viralpatel.net/blogs/");
            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();
        }
    }
}

20. 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
      System.out.println (a[i]);
}

Android is not Google and Google is not Android anymore?

I like Android a lot. It’s Linux’s biggest end-user success story. Android has great applications. Moreover, Android’s smartphone market-share is growing fast. Eventually Android will become the number one smartphone operating system in the world. If, that is, everything goes right.

Android’s biggest worry is not the iPhone, the Blackberry, or Windows Phone 7; it is that it will fragment into multiple incompatible, brand-specific versions. With a large number of custom versions of the Android platform emerging, the concern is that interoperability will be weakened because of the potential for applications built specifically for one variant or device not being able to work with others.

You see, all the original equipment manufacturers (OEMs), like Motorola and HTC put their own software, Sense UI and Motoblur respectively, on top of Android. Then, all the carriers add their own special-sauce of applications. It can get messy.

If the makers of the number one mobile game in the world are concerned, it’s a real concern. It’s not just a scary story for baby programmers.

Android: in pieces?

If there's one complaint you hear about Google's Android platform, it is about fragmentation. It happens at the device level, the OS level, with the UI, and even with specific apps and services some carriers or manufacturers use. There are plusses and minuses to all of these, and it looks like Google has lost control, ceding the problems to the licensees. Google has almost lost control of Android and has zero chance of regaining it. Android has become something that is independent of Google.

Well there are five axes of fragmentation: Device, OS, User Interface, Marketplace and Services.

For a mobile platform, a different degree of fragmentation can exist along each of these axes. For example, Apple's iOS platform has almost no fragmentation along the Marketplace axis because Apple has been so hardcore about ensuring that the iTunes marketplace is the only marketplace supported. A relatively small amount of fragmentation on the User Interface axis exists because Apple has been extremely consistent with UI. Likewise, there is a bit of device fragmentation in iOS due to different generations of iPhones having different hardware capabilities (such as a front-facing camera).

The fragmentation of Android is severe, across all of these axes, regardless of how Google’s Eric Schmidt tries to spin it. In addition, because of the complexity of the mobile ecosystem (and the other ecosystems Android is part of), the effect is more multiplicative than additive.

Google's options: Google has some tactics that it might try (is trying) to use to rein in fragmentation. Like investing in the Nexus brand as Nexus is Google's "pure" Android play, Holding Back Access to the Latest Version of Android. However, none of these will have a significant impact; in fact, most will make fragmentation worse.

If you do not feel so good about so called fragmentation, check out - Google TV. Remember, Android is not just about mobile…

Tablet Buying Guide for 2012


So you’re looking to buy a tablet. The good news is that this is the most exciting time yet for the form factor, with exciting and competitive products available or coming soon from Google, Amazon, Microsoft, and Apple. The bad news, of course, is that all this choice makes buying decisions that much harder. Let’s take a closer look at each of the major players. Here’s our tablet buying guide for summer 2012.

iPad

No need to describe this one for you. For the time being, the iPad still dominate the tablet field. It commands the most apps and, in its newest generation, an absurdly high-resolution display. Bluetooth and software like Pages, GarageBand, and iMovie make it a device for both creation and consumption (though it’s still a bit awkward to pair with a keyboard). If you know someone with a tablet, it’s probably an iPad.

Here are the three most important questions, then: Do you enjoy or prefer iOS? Are you willing to pay at least $400? And do you want a 10-inch tablet? If you answered yes to all of these, you’re probably in the market for an iPad. One caveat, though: Bloomsberg and the Wall Street Journal are reporting that Apple is putting a new, smaller iPad into production, likely for release this fall. Most tech pundits predict that the product will feature a 7.8 inch screen to allow for easy scaling of apps, and that Apple will shoot for a price range between $200 and $300. If you’re intrigued by the thought of a smaller, cheaper iPad, and you’re not necessarily looking to buy something right this minute, it might be worth waiting a couple months.

 

Google Nexus 7

Google made waves in tech circles with the unveiling of the Nexus 7 at its I/O event. This 7-inch, $200 tablet features Jelly Bean, the newest and smoothest iteration of Android yet, and it’s pretty much fully-featured: GPS (with the ability to download Google Maps to the device), Bluetooth, and elegant design. The base model comes with 8 GB of storage, and for another fifty bucks you can upgrade to 16 GB.
It’s available now, and if you enjoy or prefer Android, this is probably your safest bet — since Google is selling these tablets at cost, you’re unlikely to see another similarly high-end device for this price in the near future. Moreover, Android’s getting more and more popular, premium apps such as Flipboard, Instapaper, and Temple Run. There’s no longer much reason to covet your iPad-owning neighbor’s app selection.

 

 

Amazon Kindle Fire

At this point, there’s virtually no reason to buy a Fire, even if you’re in love with the UI or the brand. Rumor has it that Amazon will announce a new model (or two) this summer, perhaps in the next few weeks, so even if you’re a Fire devotee, you’ll want to wait a bit. In the meantime, you won’t have any problem using the full Amazon infrastructure on a Nexus 7, including both Kindle books and Amazon-curated apps.

 

 

 

Microsoft Surface

In a lot of ways, this is the big question mark in the tablet market. Microsoft’s Surface makes a lot of bold moves — by running Windows 8, it’ll command a software library arguably much larger and more flexible, especially for creative work, than the iPad. Its magnetic foldout cover/keyboard may finally make the tablet a total laptop replacement. But without a firm release date, price point, or hands-on demonstration, waiting for the Surface could be a gamble. It looks like a truly exciting game-changer, but we might not see it until late 2012.

 

Overall Verdict

Everyone’s tablet needs/wants are a little different, but for the general buyer, I’d recommend waiting a couple weeks, both to see if Amazon makes any announcements and to see how customers receive the Nexus 7. Barring any nasty surprises (or competitive new products in the Kindle line), go with the Nexus.