ファイルリソースの操作


1.ファイルリソースにアクセスする
 
     ウェブアプリケーションのクラスパスにファイルがあると仮定して、このファイルリソースは以下のようにアクセスできます.
  • FileSystemResourceを通じてファイルシステムの絶対経路でアクセスする.
  • はクラスパスでアクセスします.
  • は、Webアプリケーションのルートディレクトリに対してServletContactextResourceによりアクセスする.
  • 説明:ファイル名をgetFileName()で取得し、getFile()を通じてリソースに対応するFileオブジェクトを取得し、getInputStream()を介してファイルの入力ストリームを直接取得することができます.また、リソースの相対アドレスにおいて、createRelativeを介して新たなリソースを作成することもできます.リモートサーバ(WebサーバまたはFTPサーバ)にあるファイルリソースについては、簡単にUrlResourceを介してアクセスできます.
     
    2.Resource Utils工具類
     
    Springは、指定されたアドレスからファイルリソースをロードすることができます.Resource Utilsのget File(String resource Location)方法は、特別なプレフィックスを有するリソースアドレスをサポートするResource Utilsツールクラスを提供します.
     
    3.ローカライズされたファイルリソース
     
    ローカライズされたファイルリソースはローカライズされた識別名によって特別に命名されたファイルのセットであり、Springによって提供されたLocalized Resource Helperは、ファイルリソースベース名とローカライズされたエンティティによってマッチングしたローカライズされたファイルリソースを取得し、Resourceオブジェクトで戻ることを許可する.クラスパスi 18 nディレクトリの下で、一組のベース名を持つローカルファイルリソースを仮定して、
    Localized Resource Helper=new Localized Resource Helper()    //①米国に対応するローカライズされたファイルリソースの取得    Resource msg_s=lrHalper.findLocalized Resource(「i 18 n/message」、「.properties」、 Locale.US)    //②中国大陸に対応する現地化文書資源の取得    Resource msg_cn=lrHalper.findLocalized Resource(「i 18 n/message」、「.properties」、 Locale.China)
     
    4.FileCopyUtils
     
    例:Resource res=new Class PathResource(「conf/file 1.txt」)       //①ファイルの内容を1つのbyte[]にコピーする        byte[]fileData=FileCopyUtils.com pyToByteAray(res.getFile);       //②ファイルの内容を一つのStringにコピーする        String fileStr=FileCopyUtils.co pyToString(new FileReader(res.get File);       //③ファイルの内容を別のターゲットファイルにコピーする        FileCopyUtils.co py(res.get File()        new File(res.get File().getPartent()+「/file 2.txt」)       //④ファイルの内容を出力ストリームにコピーする        OutputStream os=new ByteArayOutputStream()        FileCopyUtils.co py(res.get InputStream(),os);
     
    5.プロパティファイル操作
     
    java.util.Propertiesのload(InputStream inStream)方法により、入力ストリームから属性リソースをロードする.Springが提供するProptiesLoaderUtilsは、クラスパスに基づくファイルアドレスを介して直接に属性リソースをロードすることを許可します.
     
    //①jdbc.propertiesはクラスパスの下にあるファイルProperties props=Propties LoaderUtils.loadAllPropertiesです.
    static Propties loadProperties->Resourceからプロパティをロードします.
     
    Sttic void fillProperties(Propties props,Resource resource)>>Resourceの属性データを既に存在しているProptiesオブジェクトに追加します.
     
    6.Enco dedResource
     
    Resourceを使用してファイルリソースをロードする場合は、デフォルトではオペレーティングシステムのコードフォーマットを使用します.ファイルリソースが特殊な符号化フォーマット(例えば、UTF-8)を採用している場合、リソースの内容を読み取る際に、事前にEncocdedResourceで符号化フォーマットを指定しなければならない.そうでないと、中国語の文字化けの問題が発生する.
     
    Resource res=new Class PathResource(「conf/file 1.txt」);①ファイルリソースに対応する符号化フォーマット(UTF-8)EnccodedResource=new EnccodedResource(res,「UTF-8」)を指定します.String content  = FileCopyUtils.co pyToString(encRes.get Reader());
     
    7.HTTPClientを使ってリモートファイルを読み込みます.
     
    	public static void read(String url, String diskPath) {
    
    		HttpClient httpClient = new DefaultHttpClient();
    		HttpGet httpGet = new HttpGet(url);
    		HttpResponse response = null;
    
    		try {
    			response = httpClient.execute(httpGet);
    
    			HttpEntity entity = response.getEntity();
    			if (entity != null) {
    				byte[] bytes = EntityUtils.toByteArray(entity);
    				FileOutputStream out = new FileOutputStream(new File(diskPath));
    				out.write(bytes);
    				out.close();
    			}
    
    		} catch (Exception e) {
    			System.err.println(e.getStackTrace());
    		}finally{
    			httpClient.getConnectionManager().shutdown();
    		}
    
    	}
     8、トランスコードツールnative 2 ascii.exe
          コマンドラインの書式:      native 2 ascii.exe-[options][inputfile]
          ここで:-[options]はコマンドスイッチを表しています.二つのオプションがあります.-reverse:Lating-1またはUnicoode符号化でファイルをローカル符号化フォーマット-encoding encoding_に変換します.name:ファイルを変換する対象コードinputfile:入力ファイルのフルネームを表します.Outputfile:ファイル名を出力します.
         
          例:
          D:\jdk 1.5.0_06\bin>native 2 ascii.exe-encoding utf 8 abc.txt bcd.txt        D:\jdk 1.5.0_06\bin>native 2 ascii.exe-encoding GBK abc.txt bcd.txt