02/10/2018, 20:45

Những thủ thuật trong Java

Trong bài viết này tôi sẽ tìm lại và tổng hợp các thủ thuật khi lập trình với java. Có thể nó sẽ giảm bớt công sức khi bạn lập trình. Xuất kết quả ra dạng tiền tệ Làm thế nào để in ra dạng tiền tệ trong Java thường là một chủ đề không được chú ý đến. Làm thế ...

Trong bài viết này tôi sẽ tìm lại và tổng hợp các thủ thuật khi lập trình với java. Có thể nó sẽ giảm bớt công sức khi bạn lập trình.

Xuất kết quả ra dạng tiền tệ

Làm thế nào để in ra dạng tiền tệ trong Java thường là một chủ đề không được chú ý đến. Làm thế nào để kết quả dạng tiền tệ được in ra theo tiêu chuẩn quốc tế?
Class java.text.NumberFormat được sử dụng để xuất kết quả ra dạng số. Nó điều khiển dấu chấm thập phân và chèn dấu phẩy. Ví dụ:
10000.1273333 --> 10,000.13
Nó cũng quan tâm đến vấn đề quốc tế hóa. Nhiều Locale sử dụng một khoảng trắng hoặc một dấu chấm để ngăn cách phần nghìn và một dấu phẩy để ngăn cách phần thập phân. Chẳng hạn, ở Hungary, ví dụ trên sẽ là:
10000.1273333 --> 10 000,13.

Tuy nhiên, class NumberFormat có thể làm được nhiều việc hơn. Nó có một thực thể Currency và thực thể này biết được là nó nên dùng biểu tượng gì để xuất kết quả ở dạng tiền tệ và làm thế nào để định dạng số. Ví dụ, 50000.25 ở Mỹ sẽ là:
$50,000.25.

Ở Hungary, sẽ là:
Ft50 000,250.

Cách dễ nhất để in giá trị là sử dụng Locale mặc định:

Locale loc =Locale.getDefault();
NumberFormat nf =NumberFormat.
getCurrencyInstance(loc);
System.out.println(nf.format(50444.423));



Bạn cũng có thể in ra tất cả định dạng Currency trong Locales:

import java.text.NumberFormat;
import java.util.Locale;

publicclassCurrency
{
staticpublicvoid main(String[] strs)
{
Locale[] locs =NumberFormat.
getAvailableLocales();
for(int i =0; i < locs.length; i++)
{
NumberFormat nf =NumberFormat.
getCurrencyInstance(locs[i]);
System.err.print(locs[i]. getLanguage());
System.err.print("_");
System.err.print(locs[i]. getCountry());
System.err.print("_");
System.err.print(locs[i]. getVariant());
System.err.print(" ");
System.err.println(nf.format(50444.423));
}
}
}

 Thủ thuật tách hoặc nối các chuỗi trong Java

Nhiều ứng dụng đòi hỏi bạn phải nối một danh sách các đối tượng (thường là chuỗi) và ngăn cách chúng bởi dấu phẩy (hoặc ký tự khác) để hiển thị (đối lập với việc phân tích). Một tập hợp các phương thức tách chuỗi đơn giản sau có thể được đặt trong một class tiện ích nào đó để phục vụ cho việc sử dụng lại.

Đoạn mã sau chứa các phương thức delimit() trả về các chuỗi. Xem minh họa ở phương thức main():

publicclassDelimit

   {
           publicstaticString delimit(Object[] a)
           {
                  return delimit(null, a,",");
          }
           publicstaticString delimit(Object[] a,String delimiter)
           {
                  return delimit(null, a, delimiter);
           }
           publicstaticString delimit(String header,Object[] a,String delimiter)
           {
                  String s =((header ==null) ? "": header);
                 String d =((delimiter ==null) ? "": delimiter);
                  if((a !=null)&&(a.length >0))
                  {
                          s += a[0].toString();
                          for(int i =1; i < a.length; i++)
                          {
                                 s += d + aIdea.toString();
                          }
                  }
                  return s;
           }
           publicstaticvoid main(String args[])
           {
                  Object[] obj ={"abcdefg",newInteger(555), newBoolean(true)};
                  System.out.println(Delimit.delimit(obj));
                  System.out.println(Delimit.delimit("LIST: ", obj," - "));  
           }
   }

 Một số thủ thuật với gói java.io

Tạo đường dẫn không phụ thuộc hệ điều hành:

String path =File.separator +“a”+File.separator +“b”;


Trên Windows, đường dẫn sẽ là: a. Trên Unix, đường dẫn có thể là /a/b

// Tạo đối tượng File

File file =newFile(“filename”);//

// Chuyển đốI tượng file sang URL

URL url =null;

try

{

url = file.toURL();

}

catch(MalformedURLException me){}

// Chuyển đổi từ URL sang File

file =newFile(url.getFile());


Lấy thư mục làm việc hiện hành:

String curDir =System.getProperty(“user.dir”);


Copy từ file này sang file khác:


void copy(File src,File dest)throwsIOException

{

InputStreamis=newInputStream(src);

OutputStream os =newOutputStream(dest);

byte[] buf =newbyte[1024];

int len;

while((len =is.read(buf))>0)

{

os.write(buf,0, len);

}

is.close();

os.close();

}


Đọc dữ liệu text từ luồng nhập chuẩn:


try

{

BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));

String str =“”;

while((str =in.readLine())!=null)

{

// xử lý dữ liệu

}

in.close();

}

catch(IOException ioe){}


Đọc dữ liệu từ tập tin văn bản:


try

{

BufferedReaderin=newBufferedReader(newFileReader(“tentaptin”));

String str =“”;

while((str =in.readLine())!=null)

{

// xử lý dữ liệu

}

}

catch(IOException ioe){}


Ghi dữ liệu text ra tập tin:

try

{

BufferedWriterout=newBufferedWriter(newFileWriter(“tentaptin”));

out.write(“ChaoJavaVietNam”);

out.close();

}

catch(IOException ioe){}


Ghi thêm dữ liệu vào tập tin:


try

{

BufferedWriterout=newBufferedWriter(newFileWriter(“tentaptin”,true));

out.write(“ChaoJavaVietNam”);

out.close();

}

catch(IOException ioe){}


Sử dụng Random Access File:


try

{

File file =newFile(“tentaptin”);

RandomAccessFile rf =newRandomAccessFile(file,“rw”);

// Đọc một kí tự

char c = rf.readChar();

// Di chuyển đến cuối tập tin

rf.seek(file.length());

// Thêm dữ liệu vào cuối tập tin

rf.writeChars(“ChaoJavaVietNam”);

rf.close();

}

catch(IOException ioe){}


Kiểm tra thư mục hay tập tin có tồn tại hay không ?


File file =newFile(“tentaptin”);// new File(“tenthumuc”);

boolean isExists = file.exists();

if(isExists)

{

// làm gì đó

}

else

{

// cũng làm gì đó

}



Đọc dữ liệu từ tập tin vào mảng byte:


publicstaticbyte[] getBytesFromFile(File file)throwsIOException

{

InputStreamis=newInputStream(file);

// Lấy chiều dài của tập tin

long length = file.length();

if(length >Integer.MAX_VALUE)

{

// tập tin quá lớn

}

//Tạo mảng byte để chứa dữ liệu

byte[] bytes =newbyte[(int)length];

// Đọc dữ liệu vào bytes

int offset =0;

int numRead =0;

while(offset < bytes.length

&&(numRead=is.read(bytes, offset, bytes.length-offset))>=0){

offset += numRead;

}

// Kiểm tra xem đã đọc hết toàn bộ tập tin hay chưa

if(offset < bytes.length){

thrownewIOException("Không thể đọc hết tập tin "+file.getName());

}

// Đóng luồng

is.close();

return bytes;

}


Ghi một đối tượng ra tập tin:


Objectobject=new javax.swing.JButton(“JavaVietNam”);

try

{

ObjectOutputout=newObjectOutputStream(newFileOutputStream(“tentaptin”));

out.writeObject(object);

out.close();

}

catch(IOException ioe){}


Lấy một đốI tượng đã được ghi ra tập tin:                                                                                                                                                          


try
{

File file =newFile(“tentaptin”);

ObjectInputStreamin=newObjectInputStream(newFileInputStream(file));

javax.swing.JButton b =(javax.swing.JButton)in.readObject();

 
// Sử dụng đối tượng JButton bình thường

}

catch(IOException ioe){}


Duyệt qua tất cả các tập tin và thư mục trong một thư mục:

publicstaticvoid visitAllDirsAndFiles(File dir){

// làm gì đó với dir ở đây…

//………………………

if(dir.isDirectory())

{

String[] children = dir.list();

for(int i=0; i

{

visitAllDirsAndFiles(newFile(dir, children));

}

}

}
Bình luận
0