`
lzkyo
  • 浏览: 466750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件资源操作

    博客分类:
  • Java
阅读更多

1.访问文件资源

 

     假设有一个文件地位于 Web 应用的类路径下,您可以通过以下方式对这个文件资源进行访问:

  • 通过 FileSystemResource 以文件系统绝对路径的方式进行访问;
  • 通过 ClassPathResource 以类路径的方式进行访问;
  • 通过 ServletContextResource 以相对于Web应用根目录的方式进行访问。

说明:可以通过 getFileName() 获取文件名,通过 getFile() 获取资源对应的 File 对象,通过 getInputStream() 直接获取文件的输入流。此外,您还可以通过 createRelative(String relativePath) 在资源相对地址上创建新的资源。对于位于远程服务器(Web 服务器或 FTP 服务器)的文件资源,您则可以方便地通过 UrlResource 进行访问。

 

2.ResourceUtils 工具类

 

Spring 提供了一个 ResourceUtils 工具类,它支持“classpath:”和“file:”的地址前缀,它能够从指定的地址加载文件资源,ResourceUtils 的 getFile(String resourceLocation) 方法支持带特殊前缀的资源地址。

 

3.本地化文件资源

 

本地化文件资源是一组通过本地化标识名进行特殊命名的文件,Spring 提供的 LocalizedResourceHelper 允许通过文件资源基名和本地化实体获取匹配的本地化文件资源并以 Resource 对象返回。假设在类路径的 i18n 目录下,拥有一组基名为 message 的本地化文件资源,

LocalizedResourceHelper lrHalper = new LocalizedResourceHelper();
    // ① 获取对应美国的本地化文件资源
    Resource msg_us = lrHalper.findLocalizedResource("i18n/message", ".properties", Locale.US);
    // ② 获取对应中国大陆的本地化文件资源
    Resource msg_cn = lrHalper.findLocalizedResource("i18n/message", ".properties", Locale.CHINA);

 

4.FileCopyUtils

 

例子:Resource res = new ClassPathResource("conf/file1.txt");
        // ① 将文件内容拷贝到一个 byte[] 中
        byte[] fileData = FileCopyUtils.copyToByteArray(res.getFile());
        // ② 将文件内容拷贝到一个 String 中
        String fileStr = FileCopyUtils.copyToString(new FileReader(res.getFile()));
        // ③ 将文件内容拷贝到另一个目标文件
        FileCopyUtils.copy(res.getFile(),
        new File(res.getFile().getParent()+ "/file2.txt"));

        // ④ 将文件内容拷贝到一个输出流中
        OutputStream os = new ByteArrayOutputStream();
        FileCopyUtils.copy(res.getInputStream(), os);

 

5.属性文件操作

 

通过 java.util.Properties的load(InputStream inStream) 方法从一个输入流中加载属性资源。Spring 提供的 PropertiesLoaderUtils 允许您直接通过基于类路径的文件地址加载属性资源。

 

// ① jdbc.properties 是位于类路径下的文件
Properties props = PropertiesLoaderUtils.loadAllProperties("jdbc.properties");

static Properties loadProperties(Resource resource) -->从 Resource 中加载属性

 

static void fillProperties(Properties props, Resource resource)-->将 Resource 中的属性数据添加到一个已经存在的 Properties 对象中。

 

6.EncodedResource

 

当您使用 Resource 实现类加载文件资源时,它默认采用操作系统的编码格式。如果文件资源采用了特殊的编码格式(如 UTF-8),则在读取资源内容时必须事先通过 EncodedResource 指定编码格式,否则将会产生中文乱码的问题。

 

Resource res = new ClassPathResource("conf/file1.txt");
// ① 指定文件资源对应的编码格式(UTF-8)
EncodedResource encRes = new EncodedResource(res,"UTF-8");
String content  = FileCopyUtils.copyToString(encRes.getReader());

 

7.使用HTTPClient读取远程文件

 

Java代码 复制代码
  1. public static void read(String url, String diskPath) {   
  2.   
  3.     HttpClient httpClient = new DefaultHttpClient();   
  4.     HttpGet httpGet = new HttpGet(url);   
  5.     HttpResponse response = null;   
  6.   
  7.     try {   
  8.         response = httpClient.execute(httpGet);   
  9.   
  10.         HttpEntity entity = response.getEntity();   
  11.         if (entity != null) {   
  12.             byte[] bytes = EntityUtils.toByteArray(entity);   
  13.             FileOutputStream out = new FileOutputStream(new File(diskPath));   
  14.             out.write(bytes);   
  15.             out.close();   
  16.         }   
  17.   
  18.     } catch (Exception e) {   
  19.         System.err.println(e.getStackTrace());   
  20.     }finally{   
  21.         httpClient.getConnectionManager().shutdown();   
  22.     }   
  23.   
  24. }  
	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、转码工具native2ascii.exe

      命令行格式:
      native2ascii.exe -[options] [inputfile [outputfile]]

      其中:
  -[options]表示命令开关,有两个选项可供选择:
  -reverse:用Latin-1或Unicode编码把文件转换成本地编码格式
  -encoding encoding_name:要把文件转换的目标编码
  inputfile:表示输入文件全名。
  outputfile:输出文件名。

     

      示例:

      D:\jdk1.5.0_06\bin>native2ascii.exe -encoding utf8 abc.txt bcd.txt 
      D:\jdk1.5.0_06\bin>native2ascii.exe -encoding GBK abc.txt bcd.txt

分享到:
评论

相关推荐

    Spring的优秀工具类盘点,第1部分:文件资源操作和Web相关工具类

    Spring不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在Spring应用中使用...文件资源操作文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特

    操作系统模拟实现Windows文件资源管理器源码+项目说明(Java语言).zip

    操作系统模拟实现Windows文件资源管理器源码+项目说明(Java语言).zip操作系统模拟实现Windows文件资源管理器源码+项目说明(Java语言).zip操作系统模拟实现Windows文件资源管理器源码+项目说明(Java语言).zip...

    file文件资源管理器

    "file文件资源管理器"是一个面向新手的工具,旨在提供基本的磁盘文件操作功能,如复制、移动等。在深入探讨这个主题之前,我们首先理解文件资源管理器的作用。文件资源管理器是操作系统中的一个核心组件,它允许用户...

    PE文件资源修改工具包

    总的来说,"PE文件资源修改工具包"提供了对PE文件进行深度操作的能力,涵盖了从资源编辑到文件分析的多个方面,对于理解和修改Windows程序的内部工作原理有着重要的作用。使用这些工具,用户可以更自由地定制和优化...

    MFC实现文件资源管理器示例

    文件资源管理器是操作系统中的一个重要组件,它允许用户浏览、操作(如打开、复制、移动、删除)计算机上的文件和文件夹。在MFC中实现这样的功能,我们需要关注以下几个关键组件: 1. **地址栏**:地址栏显示当前...

    模拟实现采用二级目录结构的磁盘文件系统中的文件操作

    - **定义**:完成文件操作后,通过“关闭文件”操作释放资源。 - **作用**:确保文件更改被正确保存到磁盘,并释放内存资源。 3. **读文件(Read)**: - **定义**:从文件中读取数据。 - **作用**:将文件中的...

    c#资源文件使用方法

    在C#编程中,资源文件是一个非常重要的概念,它允许开发者在应用程序中嵌入各种类型的数据,如文本、图像、音频、视频等。资源文件的使用可以极大地提高代码的组织性和可维护性,并且便于国际化和本地化。下面将详细...

    exe文件资源提取工具ResourcesExtract

    《exe文件资源提取工具ResourcesExtract详解》 在IT领域中,有时我们需要深入到应用程序的内部,探索并利用其中隐藏的资源。"ResourcesExtract"就是这样一款专业且强大的工具,专为提取exe可执行文件中的各种资源而...

    操作系统c语言模拟文件管理系统

    `fclose()`函数则用于结束文件操作,释放系统资源。 4. **文件读取和写入**:`fread()`和`fwrite()`用于从文件读取和写入数据,而`fgets()`和`fprintf()`则适用于读取和写入字符串。在写入时,需要确保有足够的磁盘...

    资源文件提取工具

    4. **提取操作**:工具将所选资源保存为独立的文件,例如,图标可能被保存为ICO格式,位图保存为BMP格式,字符串表可能保存为TXT或CSV格式。 5. **自定义输出**:用户还可以选择输出路径和文件名,以便组织和管理...

    用 C#语言做的文件资源管理器

    文件资源管理器是我们日常操作电脑时不可或缺的工具,它帮助我们浏览、组织和管理计算机上的文件和文件夹。本篇文章将深入探讨如何使用C#语言来构建一个功能完备的文件资源管理器,以期为你的学习之路提供指导。 ...

    EXE资源修改器--修改文件内容文件签名等等 强大

    EXE资源修改器是一种工具,专门用于对可执行文件(EXE)进行各种类型的修改,如改变文件内容、调整文件签名等。这类修改器在软件开发、逆向工程和调试过程中可能有所应用,但同时也可能被滥用进行非法操作,如篡改...

    DELPHI 资源文件生成器

    DELPHI资源文件生成器是一款专门针对DELPHI开发环境设计的工具,旨在简化开发者在创建和管理资源文件过程中的繁琐操作。传统的资源文件创建往往需要通过命令行工具brcc32.exe进行,这不仅对新手不友好,而且在频繁的...

    文件资源管理器(java)文件打开删除复制粘贴等

    文件资源管理器是用户与计算机系统之间交互的重要接口,它允许用户查看、操作、组织和管理存储在设备上的文件和目录。在Java编程环境中,我们可以构建一个类似的文件资源管理器来实现这些功能。本篇文章将深入探讨...

    VB6.0资源管理器-用于文件浏览查看.rar

    VB6.0资源管理器-用于文件浏览查看,可以自动目录遍历,并列出目录下所有文件,选中某一文件可以进行一些属性操作,比如设置是否是隐藏、设置只读、删除、重命名、存档等操作,恢复文件夹的属性,注意使用SetAttr...

    c++资源文件

    然而,题目要求从“c++资源文件”的角度出发,因此这里需要进行一定的转换,将操作系统的基础知识与C++编程语言中的资源管理和使用相结合。 ### C++资源文件知识点 #### 一、C++中的资源文件概念 在C++编程中,...

    java实现的本地文件管理器——仿Windows文件资源管理器

    1. 模仿Windows的文件资源管理器对本机的文件目录树的显示,对文件目录进行查看和浏览,用地址栏、文件目录树、打开文件夹等方法都可以在文件目录之间进行跳转 2. 对文件的基本操作:打开、删除、批量删除、重命名、...

    C#操作文件示例

    C#操作文件示例 C#操作文件示例 目录的随后补上

    操作系统课程设计文件管理系统

    通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 二、实验题目 1.编写并调试一个树型目录结构的文件系统,...

    C# 文件浏览操作控件

    7. **方便操作文件**:此控件的设计目标是简化文件操作,使得在应用程序内进行文件管理更加便捷,避免频繁切换到资源管理器。这对于那些需要频繁处理文件的软件(比如编辑器、媒体管理工具等)非常有用。 8. **应用...

Global site tag (gtag.js) - Google Analytics