Archive

Archive for the ‘File’ Category

Lấy thông tin dung lượng trống của ổ đĩa trong Java

Từ JDK 1.6, Java cung cấp các hàm để truy xuất thông tin dung lượng trống của phân vùng hoặc ổ đĩa :

– getTotalSpace() : lấy về tổng số dung lượng trống

– getFreeSpace() :  lấy về dung lượng trống thực tế của phân vùng

– getUsableSpace() : lấy về dung lượng trống sẵn có cho JVM tại thời điểm hiện tại ( có thể do giới hạn về cấp độ người dùng hoặc một số hạn chế khác ở cấp độ hệ điều hành, JVM sẽ không có quyền truy cập đầy đủ đến tất cả các không gian trống trong phân vùng )

Ví dụ sau minh họa thông tin dung lượng của phân vùng D:

package quyetdv.java.javaio.file;
import java.io.File;
public class DiskSpaceDetail {
    public static void main(String[] args) {
        File file = new File("d:");
        long totalSpace = file.getTotalSpace();
        long usableSpace = file.getUsableSpace();
        long freeSpace = file.getFreeSpace();
        System.out.println(" === Partition Detail ===");
        System.out.println(" === bytes ===");
        System.out.println("Total size : " + totalSpace + " bytes");
        System.out.println("Space free : " + usableSpace + " bytes");
        System.out.println("Space free : " + freeSpace + " bytes");
        System.out.println(" === mega bytes ===");
        System.out.println("Total size : " + totalSpace / 1024 / 1024 + " mb");
        System.out.println("Space free : " + usableSpace / 1024 / 1024 + " mb");
        System.out.println("Space free : " + freeSpace / 1024 / 1024 + " mb");
    }
}

Kết quả :

SpaceDetail

Categories: File

Chuyển đổi File thành giá trị Hex trong Java

Ví dụ sau minh họa cách sử dụng String formatter(“%02X”) để chuyển đỏi một File thành giá trị Hex

package quyetdv.java.javaio.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class FileToHex {
    public static void convertToHex(PrintStream out, File file) throws IOException {
        InputStream is = new FileInputStream(file);
        int bytesCounter = 0;
        int value = 0;
        StringBuilder sbHex = new StringBuilder();
        StringBuilder sbText = new StringBuilder();
        StringBuilder sbResult = new StringBuilder();
        while ((value = is.read()) != -1) {
           // convert to hex value with "X" formatter
           sbHex.append(String.format("%02X ", value));
           // If the chracater is not convertable, just print a dot symbol "."
           if (!Character.isISOControl(value)) {
               sbText.append((char) value);
           } else {
               sbText.append(".");
        }
        // if 16 bytes are read, reset the counter,
        // clear the StringBuilder for formatting purpose only.
        if (bytesCounter == 15) {
            sbResult.append(sbHex).append(" ").append(sbText).append("\n");
            sbHex.setLength(0);
            sbText.setLength(0);
            bytesCounter = 0;
        } else {
            bytesCounter++;
        }
     }
     // if still got content
     if (bytesCounter != 0) {
        // add spaces more formatting purpose only
        for (; bytesCounter < 16; bytesCounter++) {
            // 1 character 3 spaces
            sbHex.append(" ");
        }
        sbResult.append(sbHex).append(" ").append(sbText).append("\n");
     }
     out.print(sbResult);
     is.close();
   }
   public static void main(String[] args) throws IOException {
      // display output to console
      convertToHex(System.out, new File("D:\\test.txt"));
      // write the output into a file
      convertToHex(new PrintStream("D:\\test.hex"), new File("D:\\test.txt"));
   }
}

Kết quả:

FileToHex

Categories: File

Chuyển đổi String thành InputStream trong Java

Ví dụ sau minh họa việc chuyển một String thành InputStream và sử dụng BufferedReader để đọc và hiển thị InputStream đã được chuyển đổi.

package quyetdv.java.javaio.file;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class StringToInputStream {
    public static void main(String[] args) throws IOException {
        String str = "My name is Quyet!";
        // convert String into InputStream
        InputStream is = new ByteArrayInputStream(str.getBytes());
        // read it with BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    }
}

 

Categories: File

Chuyển đổi mảng Bytes thành File trong Java

Trong Java có thể sử dụng java.io.FileOutputStream để chuyển đổi một mảng các bytes thành một File.

Ví dụ sau sẽ minh họa việc đọc file “D:\\test.txt”, chuyển nội dung của nó thành một mảng Bytes, và ghi ra một file khác.

package quyetdv.java.javaio.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ArrayOfBytesToFile {
public static void main(String[] args) {
     FileInputStream fis = null;
     File file = new File("D:\\test.txt");
     byte[] bFile = new byte[(int) file.length()];
     try {
         // convert file into array of bytes
         fis = new FileInputStream(file);
         fis.read(bFile);
         fis.close();
         // convert array of bytes into file
         FileOutputStream fos = new FileOutputStream("D:\\test2.txt");
         fos.write(bFile);
         fos.close();
     } catch (Exception e) {
         e.printStackTrace();
     }
 }
}
Categories: File

Chuyển đổi File thành một mảng Bytes trong Java

Trong Java có thể sử dụng java.io.FileInputStream để chuyển đổi một đối tượng File thành một mảng các bytes.

Ví dụ sau sẽ minh họa cách chuyển đổi file “D:’\\test.txt” thành một mảng bytes và in ra nội dung của nó.

package quyetdv.java.javaio.file;
import java.io.File;
import java.io.FileInputStream;
public class FileToArrayOfBytes {
    public static void main(String[] args) {
        FileInputStream fis = null;
        File file = new File("D:\\test.txt");
        byte[] bFile = new byte[(int) file.length()];
        try {
            // convert file into array of bytes
            fis = new FileInputStream(file);
            fis.read(bFile);
            fis.close();
            for (int i = 0; i < bFile.length; i++) {
                System.out.print((char) bFile[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Categories: File

Sinh giá trị Checksum của File trong Java

Ví dụ sau minh họa cách sinh giá trị Checksum theo thuật toán SHA-1 cho 1 File.

package quyetdv.java.javaio.file;
import java.io.FileInputStream;
import java.security.MessageDigest;
public class GenerateCheckSum {
    public static void main(String[] args) throws Exception {
        String dataFile = "D:\\test.txt";
        MessageDigest md = MessageDigest.getInstance("SHA1");/* SHA1, MD5, ... */
        FileInputStream fis = new FileInputStream(dataFile);
        byte[] dataBytes = new byte[1024];
        int nRead = 0;
        while ((nRead = fis.read(dataBytes)) != -1) {
           md.update(dataBytes, 0, nRead);
        }
        byte[] mdBytes = md.digest();
        // convert the byte to hex format
        StringBuffer sb = new StringBuffer("");
        for (int i = 0; i < mdBytes.length; i++) {
           sb.append(Integer.toString((mdBytes[i] & 0xff) + 0x100, 16)).substring(1);
        }
        System.out.println("Digest (in hex format) :: " + sb.toString());
    }
}

Kết quả :

Digest (in hex format) :: 14119c1f91011f31771a418f1301f118f1661721a91e310115014c1d31f1

Để tìm hiểu về các thuật toán mã hóa, bạn có thể xem thêm tại : http://docs.oracle.com/javase/1.4.2/docs/guide/security/CryptoSpec.html#AppA

Categories: File

Gán nội dung file vào một biến trong Java

Có nhiều cách để thực hiện việc này:

  • Sử dụng DataInputStream
  • Sử dụng BufferedInputStream
  • Đọc từng dòng sử dụng BufferedReader
package quyetdv.java.javaio.file;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class AssignFileContentIntoVariable {
    public static void main(String[] args) {
         AssignFileContentUsingDataInputStream();
         AssignFileContentUsingBufferedInputStream();
         AssignFileContentFromLineByLine();
    }
    /**
    * Read File in String Using DataInputStream
    */
    private static void AssignFileContentUsingDataInputStream() {
        try {
             DataInputStream dis = new DataInputStream(new FileInputStream(
             "test1.txt"));
             byte[] datainBytes = new byte[dis.available()];
             dis.readFully(datainBytes);
             dis.close();
             String content = new String(datainBytes, 0, datainBytes.length);
             System.out.println(content);
        } catch (Exception e) {
             e.printStackTrace();
        }
    }
    /**
    * Read File in String Using BufferedInputStream
    */
    private static void AssignFileContentUsingBufferedInputStream() {
        File file = new File("test1.txt");
        BufferedInputStream bis = null;
        try {
            FileInputStream fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            byte[] contents = new byte[1024];
            int bytesRead = 0;
            String strFileContents;
            while ((bytesRead = bis.read(contents)) != -1) {
                strFileContents = new String(contents, 0, bytesRead);
                System.out.println(strFileContents);
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found" + e);
        } catch (IOException ioe) {
            System.out.println("Exception while reading the file " + ioe);
        } finally {
            try {
                if (bis != null)
                bis.close();
            } catch (IOException ioe) {
                System.out.println("Error while closing the stream :" + ioe);
            }
        }
    }
   /**
   * Read File in String From Line by Line
   */
   private static void AssignFileContentFromLineByLine() {
       try {
           File file = new File("test1.txt");
           FileReader fileReader = new FileReader(file);
           BufferedReader br = new BufferedReader(fileReader);
           StringBuffer sb = new StringBuffer();
           String line;
           while ((line = br.readLine()) != null) {
               sb.append(line);
               sb.append("\n");
           }
           fileReader.close();
           System.out.println(sb.toString());
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}
Categories: File