Academia.eduAcademia.edu

Những thủ thuật trong Java

Những thủ thuật trong Java Lượt xem: 609   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:   view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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(): view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? String path =File.separator +“a”+File.separator +“b”;   Trên Windows, đường dẫn sẽ là: \a\b. Trên Unix, đường dẫn có thể là /a/b view plaincopy to clipboardprint? // 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: view plaincopy to clipboardprint? String curDir =System.getProperty(“user.dir”);   Copy từ file này sang file khác: view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? try      {      BufferedWriterout=newBufferedWriter(newFileWriter(“tentaptin”));      out.write(“ChaoJavaVietNam”);      out.close();      }      catch(IOException ioe){}   Ghi thêm dữ liệu vào tập tin: view plaincopy to clipboardprint? try      {      BufferedWriterout=newBufferedWriter(newFileWriter(“tentaptin”,true));      out.write(“ChaoJavaVietNam”);      out.close();      }      catch(IOException ioe){}     Sử dụng Random Access File: view plaincopy to clipboardprint? 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 ? view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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:                                                                                                                                                           view plaincopy to clipboardprint?    view plaincopy to clipboardprint? 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: view plaincopy to clipboardprint? 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