20 very useful Java code snippets for Java Developers

      

java-duke-teachingFollowing 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

Read this article for more details.
Download JAR file json-rpc-1.0.jar (75 kb)

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

Read this article for more details.

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

Read this article for more details.

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

Read this article for more details.
Update: Thanks Markus for the comment. I have updated the code and changed it to more robust implementation.

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

Read this article for more details.

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


Facebook  Twitter      Stumbleupon  Delicious
  

26 Comments on “20 very useful Java code snippets for Java Developers”

  • Markus wrote on 13 May, 2009, 19:06

    The singleton example is bad!

    As written, it won’t even compile, since singleInstance isn’t static.

    Secondly, unless you absolutely need lazy allocation and you can live with the singleton not being thread safe, you should change it to the much simpler and more robust:

    public class SimpleSingleton {
    private static SimpleSingleton singleInstance = new SimpleSingleton();

    private SimpleSingleton() {
    }

    public static SimpleSingleton getInstance() {
    return singleInstance;
    }
    }

  • Dharmesh wrote on 13 May, 2009, 19:18

    I had to appreciate.. Quick and very picky compilations of basic snippets, which probably you search around when you need it. But this comes handy, when you need it… thanks

  • Viral Patel wrote on 13 May, 2009, 19:42

    @markus: thanks for identifying the error. I have updated the code.

    @dharmesh: thanks for the comment. Feel free to bookmark the link and add it to any of your social site.

  • Ralph wrote on 13 May, 2009, 20:51

    According to the book Effective Java (http://java.sun.com/docs/books/effective/) from Joshua Bloch this is the best way to implement a singleton in Java 1.5 (or higher)

    public enum SimpleSingleton {
    INSTANCE;
    public void doSomething() { …. }
    }

    call the method from the singleton:
    SimpleSingleton.INSTANCE.doSomething();

  • Lukasz Zielinski wrote on 13 May, 2009, 22:23

    You can have even nicer singleton using enum:

    public enum SimpleSingleton {
    INSTANCE;
    private SimpleSingleton() {
    }
    }

  • Viral Patel wrote on 13 May, 2009, 22:30

    @ralph, @lukasz: Thanks for the better implementation of Singleton. Probably both of you have pointed to same implementation. I will add this to above post.

  • Dushan Hanuska wrote on 14 May, 2009, 6:57

    Nice list of snippets. Very handy!

  • Kenneth wrote on 14 May, 2009, 9:02

    Thanks for those handy code snippet. Very useful for my daily work !

  • Matt wrote on 14 May, 2009, 18:06

    You can also do lazy singletons like this, I believe it is thread safe and backwards compatible before java 5:

    public SimpleSingleton {
    public static final SimpleSingleton INSTANCE = Inner.INSTANCE;
    private static class Inner {
    private static final SimpleSingleton INSTANCE = new SimpleSingleton();
    }
    }

  • Matt wrote on 14 May, 2009, 18:07

    *missed ‘class’ from the SimpleSingleton class above :/

  • BDLH wrote on 14 May, 2009, 21:05

    8. Create Thumbnail of an image in Java — this is ancient code.

    1. Use package javax.imageio to read and write images, not Toolkit, MediaTracker and JPEGCodec — I don’t think that was ever part of the official API, even!

    2. Your code with create a poor quality thumbnail. See Chris Campbell’s article for a better solution:

    http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

  • Andy Oliver wrote on 15 May, 2009, 12:07

    I have an additional tip for ImageIO work. If you are reading lots of images for temporary use, be certain to disable ImageIO disk caching. I’ve published information about this technique here:

    http://frequal.com/java/PreventUnexpectedImageIODiskWrites.html

  • Simon wrote on 15 May, 2009, 19:12

    Please, correct me, if I’m wrong.
    I would change the second snippet:
    # 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();
    # }
    # }

  • Viral Patel wrote on 15 May, 2009, 19:41

    @simone: thanks for changing the code. I have updated the main code.

  • Jagadeesh wrote on 19 May, 2009, 11:26

    Nice list of snippets. Saving our precious time to search for the things across the sites.Very handy.

  • Igor wrote on 20 May, 2009, 1:26

    More useful Java utilities:

    http://jodd.org/api/jodd/jodd/util/package-summary.html

  • Ravi Shiraguppi wrote on 21 May, 2009, 13:01

    Is there any other way to convert array to Map without importing third party jar?

    Array to Set
    import java.util.*;
    public class ArrayToSet{
    public static void main(String arg[]){
    String elements[]={“array”,”to”,”set”};
    Set set=new HashSet(Arrays.asList(elements));

    for (Iterator iterator = set.iterator(); iterator.hasNext();) {
    Object o = iterator.next();
    System.out.println(o );
    }

    }
    }

  • pradeep wrote on 22 May, 2009, 11:08

    Hi Viral,

    Thank you for compilation of all usefull code snippets.

    But it will be more usefull if you can keep them in topics wise.

    I do want to look for more from your site.

    Thanks,
    Pradeep

  • Arun wrote on 22 May, 2009, 18:16

    Very Handy & Simple .

  • Rekha wrote on 24 May, 2009, 10:30

    Good post!! Nice and handy information.

  • Viral Patel wrote on 25 May, 2009, 21:33

    Thanks for the comment.
    I will try to compile more snippets for the developers.

  • Trollhorn wrote on 26 May, 2009, 12:40

    There is an even better solution for resizing an array:

    int[] a = new int[10];

    // roughly doubling the array size
    a = java.util.Arrays.copyOf(a, a.size * 2 + 1);

  • Trollhorn wrote on 27 May, 2009, 12:03

    Of course it should be a.length, sorry me :-)

    a = java.util.Arrays.copyOf(a, a.length * 2 + 1);

    A complete method would look similar to this:

    private static void resizeArray(T[] a, int size) {
    if (size < 0) {
    throw new IllegalArgumentException();
    }

    return java.util.Arrays.copyOf(a, size);
    }

  • ali mohammad wrote on 25 July, 2009, 14:42

    thank you sir these are very helping codes for me.

  • Lingam Goud wrote on 6 August, 2009, 12:03

    Thanks viral , it will helps a lot , hoping for more to come.

  • Madhukar wrote on 10 August, 2009, 3:01

    Tip 5, line # test.init(); —> will give a compile error. You need to pass the filestream to the init() function. Otherwise its a good example.

  • Bill Bartmann wrote on 2 September, 2009, 9:02

    Excellent site, keep up the good work

Write a Comment

Gravatars are small images that can show your personality. You can get your gravatar for free today!

Copyright © 2010 ViralPatel.net. All rights reserved.