转自:http://hi.baidu.com/o%C6%DF%D7%D0o/blog/item/a3286aecdeb6082263d09fc7.html
Java文件操作的两个“踢不死”
2008年05月20日 星期二 11:23
“踢不死”就是英文Tips的意思
1. 判断两个路径是否指向同一个文件
我们知道在Windows操作系统下文件名是不区分大小写;另外在不同的操作系统下可以用 . 来表示当前目录,或者直接只写文件名也表示默认为当前目录,例如当前目录是D:\work,那么文件D:\work\aaa.txt和.\Aaa.txt 实际上指的是磁盘上的同一个文件,但是程序怎么来判断这种情况呢?请看下面代码
/**
* 判断两个File对象是否指向同一个文件
* @throws IOException
*/
protected static void testCanonicalFile() throws IOException{
File f1 = new File("D:\work\AAA.txt");
File f2 = new File("./aaa.txt");
boolean sameFile = f1.getCanonicalFile().
equals(f2.getCanonicalFile());
System.out.println(sameFile);
}
通过getCanonicalFile方法来获取某个文件在当前操作系统下对应的目标文件,只要两个路径指向同一个文件,则两个文件对象的getCanonicalFile返回的对象一定相等,因此上面的例子打印的值是 true.
2. 强制将文件写入磁盘
操作系统包括硬件为了提供磁盘IO的性能,都会加入一个缓冲。当应用程序在读写磁盘的时候事实上是在读写缓冲区的内容,然后由操作系统负责将缓冲的 内容写入磁盘空间,这样可以大大提供应用程序的IO性能,但是同样带来一个问题是可能导致数据的丢失,当应用程序写入数据后发生系统异常或者突然断电,而 这个时候操作系统还没将缓冲区的数据写入磁盘时候就会发生这种情况。因为在某些应用场合,我们的程序需要确切的将数据写入到磁盘上,我们可以使用下面的代 码来进行处理:
/**
* 强制将文件写入磁盘,放置因机器意外导致文件丢失
* @throws IOException
*/
protected static void testFlushToDisk() throws IOException{
FileOutputStream fos = new FileOutputStream("D:\\aaa.txt");
FileDescriptor fd = fos.getFD();
fos.write("你好,Java自由人".getBytes());
fos.flush();
fd.sync();
}
通过获取文件对象的描述符,也就是FileDescriptor实例,然后调用sync方法即可将文件写入磁盘。
分享到:
相关推荐
可易文件操作日志监控 是一个功能非常实用的软件,它可以对文件文件夹进行操作记录,例如:新建、修改、重命名、删除、复制等都可以实现记录下来,把这些记录显示到一个表格中,包含操作时间、操作类型、文件所在...
**Qt文件操作示例程序** Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API用于处理各种文件操作。在这个示例程序中,我们可能会看到如何在Qt中进行基本的文件读写、文件操作监控以及进度条的...
编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...
CANoe/CAPL 文件操作脚本是用于自动化处理CANoe环境中的配置、数据记录和分析的编程工具。CANoe是一款广泛应用于汽车电子系统的诊断、测试和测量的软件,而CAPL(CANoe Application Programming Language)是CANoe内...
C语言文件操作及函数大全 2.文件操作函数: (1)文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen("文件名","使用文件方式"); 其中,“文件指针名”必须是被说明为FILE 类型的...
大学本科操作系统实验 《磁盘文件操作模拟C语言》,花了两天的时间调试。
原数据存放在StreamingAsset中,首次启动复制到persistentDataPath,以后进行更新和读取都在persistentDataPath中使用File进行文件操作。需要恢复书序的时候从StreamingAsset中获取即可。
易语言文件操作类模块源码,文件操作类模块,取对象,取驱动器集合,追加路径,取驱动器名称,取父文件夹名称,取文件名,取不带扩展名的文件名,取扩展名,取完整路径名,取临时文件名,驱动器是否存在,文件是否存在,文件夹是否...
Noip 文件操作精讲 Noip 文件操作是编程语言中最基本也是最重要的一部分,涉及到文件的输入输出操作。无论是 C 语言还是 C++ 语言,文件操作都是必不可少的。下面将对 Noip 文件操作进行详细的讲解。 文件操作的...
Java文件操作封装类
PHP 写的一个简单文件操作类,支持 PHP4 PHP5
Linux 操作系统文件和目录操作报告 Linux 操作系统中的文件类型可以...在 Linux 操作系统中,文件操作命令非常丰富,包括 touch、cp、mv、rm、cat、find 等命令。这些命令可以帮助用户高效地管理和操作文件和目录。
C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#编程 文件操作 WordReplace(源码)(源码)C#...
文件IO 文件操作 操作文件 标准IO和文件IO 文件IO是计算机系统中最基本的输入/输出操作之一,它允许程序访问和操作文件。文件IO可以分为两大类:标准IO和文件IO。标准IO是指使用标准输入输出流来读取和写入文件,而...
本项目“C++使用hookapi监控文件操作程序”正是基于这一技术,用于实现对文件系统事件的实时监控。下面将详细介绍相关的知识点。 首先,`hookapi`是指Windows API中的钩子(Hook)机制。钩子是一种让程序能够监视...
本设计的目的是通过设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件管理,使学生对主要文件操作命令的实质和执行过程有比较深入的了解,掌握它们的基本实施方法。具体要求如下: ⑴设计一个...
本课程设计的主题是“文件操作的实现”,这涉及到使用汇编语言来处理计算机中的文件系统,包括打开、读取、写入和关闭文件等基本操作。以下是关于这个主题的详细知识讲解。 一、汇编语言基础 汇编语言是一种符号化...
C语言中的文件操作是编程中常见且至关重要的部分,它允许程序员与外部存储设备交互,进行数据的读取和写入。在ANSI C中,文件操作主要通过两种方式进行:流式文件操作和I/O文件操作。本文将重点讨论流式文件操作,...
顾名思义,主要介绍C语言的文件操作函数,无须多言
JSP文件操作