JAVA EXAMPLE PROGRAMS

JAVA EXAMPLE PROGRAMS

Checkout for Promo Codes

Program: How to generate checksum value for for a file in java?


Description:

A Checksum is used for error checking or to identify whether the file is corrupted while transferring a file in the network. The data transfer happens in the form of packets. Checksum is computed on the contents of a file. For each packet the computed checksum value will be different. This computed value is transmitted along with the packet. At the receiving end we verify the checksum values to determine whether the file is corrupted or not. Below example shows how to generate checksum value.


Code:
package com.java2novice.zip;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Adler32;
import java.util.zip.CheckedInputStream;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class MyChecksumExample {

	public static void main(String a[]){
		
		//Create a zip file using checksum
		MyChecksumZip mfe = new MyChecksumZip();
		List<String> files = new ArrayList<String>();
		files.add("C:/test.txt");
		files.add("C:/test.sh");
		files.add("C:/port-chn.txt");
		mfe.zipFiles(files);
		//Unzip the file using checksum 
		MyChecksumUnzip mcu = new MyChecksumUnzip();
		mcu.unzipFile("C:/testing.zip");
	}
}

class MyChecksumZip{
	
	public void zipFiles(List<String> files){
		
		FileOutputStream fos = null;
        ZipOutputStream zipOut = null;
        FileInputStream fis = null;
        CheckedOutputStream checksumOs = null;
		try {
			fos = new FileOutputStream("C:/testing.zip");
			checksumOs = new CheckedOutputStream(fos, new Adler32());
			zipOut = new ZipOutputStream(new BufferedOutputStream(checksumOs));
			for(String filePath:files){
				File input = new File(filePath);
				fis = new FileInputStream(input);
				ZipEntry ze = new ZipEntry(input.getName());
				System.out.println("Zipping the file: "+input.getName());
				zipOut.putNextEntry(ze);
				byte[] tmp = new byte[4*1024];
				int size = 0;
				while((size = fis.read(tmp)) != -1){
					zipOut.write(tmp, 0, size);
				}
				zipOut.flush();
				fis.close();
			}
			zipOut.close();
			System.out.println("checksum: "+checksumOs.getChecksum().getValue());
			System.out.println("Done... Zipped the files...");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			try{
				if(fos != null) fos.close();
			} catch(Exception ex){
				
			}
		}
	}
}

class MyChecksumUnzip{
	
	public void unzipFile(String filePath){
		
		FileInputStream fis = null;
		ZipInputStream zipIs = null;
		ZipEntry zEntry = null;
		try {
			fis = new FileInputStream(filePath);
			CheckedInputStream checksumIs = new CheckedInputStream(fis, new Adler32());
			zipIs = new ZipInputStream(new BufferedInputStream(checksumIs));
			while((zEntry = zipIs.getNextEntry()) != null){
				try{
					byte[] tmp = new byte[4*1024];
					FileOutputStream fos = null;
					String opFilePath = "C:/"+zEntry.getName();
					System.out.println("Extracting file to "+opFilePath);
					fos = new FileOutputStream(opFilePath);
					int size = 0;
					while((size = zipIs.read(tmp)) != -1){
						fos.write(tmp, 0 , size);
					}
					fos.flush();
					fos.close();
				} catch(Exception ex){
					
				}
			}
			zipIs.close();
			System.out.println("Checksum: "+checksumIs.getChecksum().getValue());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Output:
Zipping the file: test.txt
Zipping the file: test.sh
Zipping the file: port-chn.txt
checksum: 108027849
Done... Zipped the files...
Extracting file to C:/test.txt
Extracting file to C:/test.sh
Extracting file to C:/port-chn.txt
Checksum: 108027849
<< Previous Program | Next Program >>

List of all java.util.zip class sample examples:

  1. How to compress byte array in java?
  2. How to decompress byte array in java?
  3. How to zip a single file?
  4. How to zip multiple files?
  5. How to read zip files entries or file name list?
  6. How to unzip files in java?
  7. How to generate checksum value for for a file in java?
  8. How to compress and store objects using zip utility?
  9. How to decompress the compressed objects using zip utility?
  10. How to zip a file using ZipFile class?
  11. How to compress a file in GZip format?
  12. How to uncompress a file from GZip format?
Knowledge Centre
When to use LinkedList or ArrayList?
Accessing elements are faster with ArrayList, because it is index based. But accessing is difficult with LinkedList. It is slow access. This is to access any element, you need to navigate through the elements one by one. But insertion and deletion is much faster with LinkedList, because if you know the node, just change the pointers before or after nodes. Insertion and deletion is slow with ArrayList, this is because, during these operations ArrayList need to adjust the indexes according to deletion or insetion if you are performing on middle indexes. Means, an ArrayList having 10 elements, if you are inserting at index 5, then you need to shift the indexes above 5 to one more.
Famous Quotations
Discipline is just choosing between what you want now and what you want most.
-- Unknown Author

About Author

I'm Nataraja Gootooru, programmer by profession and passionate about technologies. All examples given here are as simple as possible to help beginners. The source code is compiled and tested in my dev environment.

If you come across any mistakes or bugs, please email me to [email protected].

Most Visited Pages

Other Interesting Sites

Reference: Java™ Platform Standard Ed. 7 - API Specification | Java™ Platform Standard Ed. 8 - API Specification | Java is registered trademark of Oracle.
Privacy Policy | Copyright © 2020 by Nataraja Gootooru. All Rights Reserved.