国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

文件名到URL的轉(zhuǎn)換

2019-11-18 13:28:06
字體:
供稿:網(wǎng)友

  主題:
  * Pathnames to URLs
  * Using Vector in the Collection Framework
  * Reading/Writing Unicode Using I/O Stream Encodings
  
  CONVERTING PATHNAMES TO URLS
  
  File.toURL 方法是 java(tm) 2 Platform 的新特性, 可以用來將 pathname
  轉(zhuǎn)換為URL格式.
  
  簡單示例如下:
  
  import java.io.*;
  import java.net.*;
  
  public class url {
  public static void main(String args[])
  {
  if (args.length != 1) {
  System.err.  System.exit(1);
  }
  File f = new File(args[0]);
  try {
  URL u = f.toURL();
  System.out.println(u);
  }
  catch (MalformedURLException e) {
  System.err.println(e);
  }
  }
  }
  
  For input of:
  
  $ java url paper.txt (current Directory is t:/tmp)
  
  output is:
  
  file:/T:/tmp/paper.txt
  
  得到的URL可以用來指示Netscape或者IE來察看本地的文件.
  
  這個方法時的應(yīng)用程序可以將本地文件與基于Web的資源一視同仁的編程.
  
  USING VECTOR IN THE COLLECTION FRAMEWORK
  
  Collections 是 Java 2 Platform 的新特性, 用于組織和操作大量的數(shù)據(jù)元素.
  再如, ArrayList 可以作為 Vector 的替代者, HashMap 和 Hashtable 極為相像.
  
  像 Vector 這樣的原先使用的類依然可以使用, 但是用新的代用品更為優(yōu)秀.
  如何在兩者之間轉(zhuǎn)化成為了一個問題. 你可能在應(yīng)用程序中想把 Vector 對象
  轉(zhuǎn)換為 ArrayList . 如下示例說明了之一轉(zhuǎn)換過程:
  
  import java.util.*;
  
  public class convert {
  public static void process(ArrayList al)
  {
  for (int i = 0; i < al.size(); i++)
  System.out.println(al.get(i));
  }
  
  public static void main(String args[])
  {
  Vector vec = new Vector();
  
  vec.addElement("123");
  vec.addElement(new Integer(456));
  vec.addElement(new Double(789));
  
  process(new ArrayList(vec));
  }
  }
  
  首先生成一個 Vector 對象并加入若干個數(shù)據(jù)元素. 然后調(diào)用 process 方法,
  并將一個 ArrayList 作為參數(shù), 這個 ArrayList 對象是通過帶有一個 Vector
  對象的參數(shù)的構(gòu)造函數(shù)生成的. 更準(zhǔn)確的說, 在這里, ArrayList 的構(gòu)造函數(shù)
  所需的參數(shù)是從 "Collection" 接口實現(xiàn)的, Vector 的上兩層基類
  java.util.AbstractCollection 正是實現(xiàn)的 Collection 接口, 同樣 ArrayList
  對象也可以用同樣的方法從構(gòu)造函數(shù)中獲得.
  
  READING/WRITING UNICODE USING I/O STREAM ENCODINGS
  
  與常用的其他語言不同 Java 使用雙字節(jié)的 Unicode 字符集. 這樣做帶來的問題是:
  Java的字符集是如何在磁盤文件上存儲的, 并且 Java 如何使用現(xiàn)有的大量 ASCII
  格式的數(shù)據(jù)?
  
  早期的 JDK(tm) , 比如 1.0.2 版本, 中這個問題沒有得到解決. 例如:
  DataInputStream.readLine 方法用于讀取整行的輸入, 但他無法正確的將字節(jié)轉(zhuǎn)化為
  字符, 因此已被廢棄. 在 Unicode 得到廣泛的使用前, 這個問題仍然是重要的.
  
  解決問題之道是使用 Reader 和 Writer 這一對 I/O 類. 他們是基于字節(jié)流的
  (如同F(xiàn)ileInputStream), 并且實現(xiàn)字符, 字節(jié)的雙向轉(zhuǎn)換.
  
  下面的程序可以得到系統(tǒng)的缺省轉(zhuǎn)換格式:
  
  public class encode {
  public static void main(String args[])
  {
  String p = System.getProperty("file.encoding");
  System.out.println(p);
  }
  }
  
  在我的機(jī)器和 Java 2 軟件上, 輸出為 "GBK", 這個格式為:
  
  GBK, Simplified Chinese
  
  對于 encodings 的表格可以從如下獲得:
  
  http://java.sun.com/prodUCts/jdk/1.1/intl/Html/intlspec.doc7.html
  
  假如你希望直接指定轉(zhuǎn)換方式, 下面的程序就是范例, 他將Unicode字母表中的所有小寫字母寫入文件。
  在這些字母中, 有一些的高字節(jié)是非零的(就是那些大于'/u00ff'的字母),因此正確的轉(zhuǎn)化十分重要。
  這里使用的方式為 UTF-8, 他能夠?qū)SCII字符轉(zhuǎn)換為單字節(jié)字符,而其他字符仍然保持兩到三個字節(jié)。
  
  import java.io.*;
  
  public class enc1 {
  
  public static void main(String args[]) {
  try {
  FileOutputStream fos = new FileOutputStream("out");
  OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF8");
  for (int c = '/u0000'; c <= '/uffff'; c++) {
  if (!Character.isLowerCase((char)c))
  continue;
  osw.write(c);
  }
  osw.close();
  } catch (IOException e) {
  System.err.println(e);
  }
  }
  }
  
  相反的轉(zhuǎn)換過程如下;
  
  import java.io.*;
  
  public class enc2 {
  
  public static void main(String args[]) {
  try {
  FileInputStream fis = new FileInputStream("out");
  InputStreamReader isr = new InputStreamReader(fis, "UTF8");
  for (int c = '/u0000'; c <= '/uffff'; c++) {
  if (!Character.isLowerCase((char)c))
  continue;
  int ch = isr.read();
  if (c != ch)
  System.err.println("error");
  }
  isr.close();
  } catch (IOException e) {
  System.err.println(e);
  }
  }
  }
  
  InputStreamReader 和 OutputStreamWriter 是用于字節(jié)流域字符流進(jìn)行相互轉(zhuǎn)化的類。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沈丘县| 和政县| 皮山县| 镇康县| 江陵县| 尚义县| 和政县| 土默特右旗| 台东市| 桑日县| 兴义市| 常熟市| 沅江市| 遵义县| 柘城县| 微山县| 武夷山市| 周口市| 萨嘎县| 文化| 白沙| 鸡东县| 开阳县| 广德县| 商城县| 汽车| 岳阳市| 元朗区| 绍兴市| 上犹县| 新宁县| 梁山县| 鄯善县| 广丰县| 多伦县| 偃师市| 体育| 林西县| 微山县| 登封市| 忻城县|