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

文件处理

    博客分类:
  • J2SE
阅读更多

1.获取给定文件的文件名 获取给定文件的文件名,如程序3-22所示。该函数比较简单,就是通过文件分隔符,返回给定路径的最后一个分隔符之后的字符串,如果查找不到文件分隔符,则表明当前的参数s就是文件名称,直接返回即可。比如在Windows系统下的一个文件存储,路径可能是“C:\\temp\\image_log.txt”,程序最后返回的结果将是“image_log.txt”。

在Windows下的文件分隔符为“\”,而Linux下则为“/”,注意区分。

程序3-22 获取文件名

public static String extractFileName(String s)

{

int pos = s.lastIndexOf(File.separatorChar);

if (pos != -1) return s.substring(pos+1); else return s;

}

2.文件到文件流的操作 本模块的示例程序3-23实现了从文件读取到文件流及输入输出文件流之间的转换两部分。首先是loadFile函数,它把文件filename读入输入文件流,然后转换到输出文件流,这里使用ByteArrayOutputStream字节数组输出流。loadFile函数中使用convertStream函数,就是输入文件流和输出文件流之间的转换。循环读取,然后依次写入。

程序3-23 读文件

public static String loadFile(String filename)

{

try {

FileInputStream in = new FileInputStream(new File(filename));

ByteArrayOutputStream os = new ByteArrayOutputStream();

convertStream(in, os);

return os.toString();

}

catch (Exception ex) {}

return "";

}

//输入、输出文件流的转换

public static void convertStream(InputStream is, OutputStream os) throws NullPointerException, IOException

{

if (is == null || os == null) throw new NullPointerException();

byte[] buf = new byte[1024];

int cnt;

while ((cnt = is.read(buf)) != -1) os.write(buf, 0, cnt);

is.close();

os.close();

}

3.文件的复制 复制文件模块如程序3-24所示。文件复制的实现机制如下,首先建立两个文件流。一个是使用起始文件路径建立的输入文件流,一个是使用目标文件路径建立的输出文件流,然后循环从输入文件流读取,依次把内容写入输出文件流,这样就完成了文件的复制功能。

程序3-24 文件复制

/**

* 文件复制功能

*

* @param from 起始文件路径

* @param to 目标文件路径

* @return size 文件复制过程中操作的字节数

* @throws IOException

*/

public static long copyFile(File from, File to) throws IOException {

if (from == null || to == null || !from.isFile()) return -1;

FileInputStream fis = new FileInputStream( from );

FileOutputStream fos = new FileOutputStream( to );

byte [] buff = new byte[1024];

int read = 0;

long size = 0;

while ( (read = fis.read(buff)) > 0 ) {

fos.write(buff, 0, read);

size += read;

}

fos.close();

fis.close();

return size;

}

4.按照特定编码从文本文件读/写字符串 使用给定的编码encode从文件中读文件到字符串及使用给定的编码encode把字符串写入文件的模块,如程序3-25所示。函数readFromFile把文件读取到FileInputStream文件流中,然后显示结果的时候使用给定的编码encode返回。函数writeToFile是readFromFile的逆向过程,它的作用是向文件中写入字符串内容,写入前需要先把字符串text使用给定的编码转换一下,这样才能正确地写入到文件中去。

程序3-25 读/写文件

/**

*从文本文件读取文件内容为字符串,按照encode编码返回结果

*

* @param filename 要读取的文件

* @param encode 编码

* @return string readed

*/

public static String readFromFile(String filename, String encode) {

try {

FileInputStream fis = new FileInputStream(filename);

byte[] buf = new byte[fis.available()];

fis.read(buf);

fis.close();

return new String(buf, encode);

}

catch (Exception ex) {

ex.printStackTrace();

}

return "";

}

/**

* 按照encode向文本文件写入字符串

*

* @param text 需要写入的字符串

* @param filename 待写入的文件

* @param encode 编码

*/

public static void writeToFile(String text, String filename, String encode) {

try {

byte[] buf = text.getBytes(encode);

FileOutputStream fos = new FileOutputStream(filename);

fos.write(buf);

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

3.4.2 文件目录处理模块 1.返回文件所在的目录 返回文件所在目录的模块,如程序3-26所示。该函数比较简单,就是通过文件分隔符,返回给定路径的最后一个分隔符之前的字符串即可。

程序3-26 返回文件所在目录

public static String extractFilePath(String s)

{

int pos = s.lastIndexOf(File.separatorChar);

if (pos != -1) return s.substring(0, pos+1); else return "";

}

2.把文件从一个目录移动到另外一个目录 在不同目录之间移动文件的模块,如程序3-27所示。文件移动操作的实现比较简单,如果文件from和文件to在同一目录下,只需要使用File类的renameTo函数即可,就是把源文件重命名成目标文件即可。当文件不在同一个目录下的时候,只需要使用文件复制功能,把源文件夹复制到目标文件夹即可。

程序3-27 文件移动

/**

* 在不同路径之间移动文件

*

* @param from 源地址

* @param to 目标地址

* @return 返回已经写入的字节数

* @throws IOException

*/

public static long moveFile(File from, File to) throws IOException {

if (from == null || to == null || !from.isFile()) return -1;

long size = 0;

if (from.getParent().equals(to.getParent())) {

from.renameTo(to);

FileInputStream fis = new FileInputStream( to );

size = fis.available();

fis.close();

} else {

size = copyFile(from, to);

from.delete();

}

return size;

}

3.使用给定的路径生成文件路径 使用给定的路径生成文件路径的模块代码,如程序3-28所示。基本原理是,使用File类的mkdir函数创建路径,代码递归调用createDirectory函数,使用绝对路径创建给定参数的文件路径。

程序3-28 生成文件路径

/**

* 使用给定的目录字符串创建文件目录,类似"/dd/aa/bb"

*

* @param path 要创建的路径,需要使用绝对路径

*/

public static void createDirectory( String fullpath ) {

File dir = new File(fullpath);

if(!dir.exists())

{

createDirectory( dir.getParentFile().getAbsolutePath() );

dir.mkdir();

}

}

4.删除文件目录 删除文件目录的模块代码,如程序3-29所示。该程序也是一个递归调用的过程,因为在目录的下面还可能包含其他的目录和文件,所以程序使用了一个for循环,依次删除子目录和文件。File类的delete方法只能删除该路径下的文件或者空目录,所以当判断子目录为文件目录时,需要递归调用deleteDirectory(File dir)函数方法,即下面程序代码中的deleteDirectory( children[i] );语句,最后遍历删除完该目录下的所有文件后,使用dir.delete()方法删除该空目录,完成文件目录删除的功能

程序3-29 删除文件目录

/**

* 递归删除特定的文件目录

*

* @param dir 需要删除的目录

*/

public static void deleteDirectory(File dir) {

if (dir == null || !dir.isDirectory()) return;

File[] children = dir.listFiles();

if (children != null) {

for (int i=0; i<children.length; i++) {

if ( children[i].isFile() ) {

children[i].delete();

} else if ( children[i].isDirectory() ) {

deleteDirectory( children[i] );

}

}

}

dir.delete();

}

分享到:
评论

相关推荐

    文件处理申请单(表格模板、DOC格式).doc

    文件处理申请单(表格模板、DOC格式).doc是管理部門使用的文件处理申请单模板,用于记录和管理文件的处理过程。该模板包括以下几个主要部分:文件处理状态、文件信息、申请信息、签收信息和流程信息。 知识点1:...

    易语言大文件处理

    易语言大文件处理源码,大文件处理,打开对象,关闭对象,取对象长度,移动对象位置,取对象位置,读入对象,CreateFile,CloseHandle,SetFilePointer,SetLastError,ReadFile,GetFileSizeEx

    c++大文件处理

    vs2010中有关c++大文件处理的方法

    将pcap文件处理为csv文件,并根据协议类型分开保存

    需要三个空白文件夹,一个存放数据包,一个存放解析时的json文件,还有一个存放最终的csv文件,并且最终制成数据集的形式

    sgy地震波数据文件及MATLAB处理sgy文件的程序!

    MATLAB中的SGY文件处理程序通常涉及以下几个关键步骤: 1. **读取SGY文件**:MATLAB程序首先需要读取SGY文件,这通常通过自定义的函数实现,因为MATLAB标准库中并未直接支持SGY格式。读取函数会解析文件头信息,...

    易语言源码易语言大文件处理源码.rar

    易语言源码易语言大文件处理源码.rar

    C#文件处理模块(封装了一些常见的文件和文件夹操作。)

    该C#源文件包含了一些函数封装了一些常见的文件和文件夹操作。

    Java常用文件处理类

    该类主要对常见的一些文件操作进行了封装,如读写文件(UTF-8)、复制文件、删除文件,创建目录等

    纯C++ 文件流 处理函数

    在C++编程中,文件流(File Stream)是处理输入/输出操作的重要工具,它使得程序可以方便地读写磁盘上的文件。...通过学习和理解这些代码,你可以更好地掌握C++在文件处理和字符串操作方面的功能,提升你的编程技能。

    csv文件处理代码(读写)

    csv文件的读写代码!希望对大家有所帮助!

    Java读取大文件的处理

    Java读取大文件的处理 Java读取大文件的处理是Java编程中的一项重要技术,特别是在处理大文件时需要注意性能和响应速度。下面我们将对Java读取大文件的处理技术进行详细的介绍。 标题解释 Java读取大文件的处理是...

    图片文件处理工具类

    图片文件处理工具类

    基于Python开发的档案转换与ico文件处理设计源码

    本项目是一款基于Python的档案转换与ico文件处理工具源码,共计30个文件,涵盖14个pyc字节码文件、8个Python源代码文件、5个XML配置文件、1个.gitignore配置文件、1个Idea项目文件和1个ico图标文件。该工具旨在提供...

    基于Python和CDO工具的NC文件处理设计源码

    该项目为基于Python和CDO工具设计的NC文件处理源码,包含62个文件,其中58个为Python源文件、2个R语言脚本文件以及2个Markdown文件。主要功能是利用Python和CDO工具对NC文件进行高效处理。

    VC使用内存映射文件处理大文件

    visual c++ vc使用内存映射文件mapping file处理大文件

    处理vasp数据文件LOCPOT的f90脚本

    本程序为fortran脚本,可以处理vasp数据文件LOCPOT及CHGCAR,运行本程序无需输入任何参数, !得到功函数势曲线(需减掉费米能级)和电荷线分布(除以体积可得电荷线密度) !若在linux-shell下运行(把中文注释删掉...

    photoshop处理rgb格式文件的插件

    "photoshop处理.rgb格式文件的插件"是指用于增强Photoshop对RGB文件处理能力的外挂程序。这样的插件通常由Adobe或其他第三方开发商提供,它们可以扩展Photoshop的功能,比如提升色彩管理、增加滤镜效果、优化色彩...

    SI5338寄存器文件处理脚本

    处理SI5338 生成寄存器文件,将其转换成mif文件,即FPGA的存储器初始化文件

    CSV大文件分割工具.rar

    CSV文件是一种常见的...总之,"CSV大文件分割工具"是一个实用的工具,它解决了大CSV文件处理中的常见问题,提高了工作效率,并且降低了对系统资源的需求。在处理大量数据时,合理地运用这类工具能显著提升工作效果。

    Web Api 通过文件流 下载文件到本地实例

    在ASP.NET Web API中,通过文件流下载文件到本地是一个常见的功能需求,它涉及到网络通信、文件处理和HTTP协议等多个方面。在这个实例中,我们将深入探讨如何实现这一过程,以及涉及的关键技术和步骤。 首先,我们...

Global site tag (gtag.js) - Google Analytics