File初步

本次博客我们将第一次认识io并通过代码来了解
1.如何创建文件夹与文件
2.获取文件的属性
3.删除文件
4.获取文件的子目录并遍历出来

接下来我们看一下代码

package FileText;

import java.io.File;
import java.io.IOException;

/**
 *初次认识文件
 * @author lover
 *
 */
public class Firstio {
public static void main(String[] args) throws IOException {
    File f1=new File("c:\\abc");
    File f2=new File("c:\\abc\\aa.txt");
    File f3=new File("c:\\abc\\ac\\ad");
    //新建文件和文件夹
    if(!f1.exists()){
        f1.mkdir();
        System.out.println("目录创建成功");
    }else{
        System.out.println("创建失败");
    }
        //mkdir 只能创建目录下的一个子目录   mkdirs则可以创建多层目录
    if(!f3.exists()){
        f3.mkdirs();
        System.out.println("目录创建成功");
    }else{
        System.out.println("创建失败");
    }

    if(!f2.exists()){
        f2.createNewFile();
        System.out.println("文件创建成功");
    }else{
        System.out.println("文件创建失败");
    }

    //查看文件的属性
    System.out.println("文件是否可以执行"+f2.canExecute());
    System.out.println("文件是否可读"+f2.canRead());
    System.out.println("文件是否可写"+f2.canWrite());
    System.out.println("获取文件的绝对路径"+f2.getAbsolutePath());
    System.out.println("文件的父路径"+f2.getParent());
    System.out.println("获取文件的空间大小"+f2.getFreeSpace());
    System.out.println("文件的路径"+f2.getPath());
    System.out.println("判断文件是否是文件"+f2.isFile());

    //删除文件
    if(f3.exists()){
        System.out.println("文件删除成功"+f3.delete());
    }

    //重命名
    f2.renameTo(new File("c:\\abc\\aabcde.txt"));

    //查找目录下的内容
    File f5=new File("C:\\Intel");
    File[] file=f5.listFiles();
    for(int i=0;i<file.length;i++){
        System.out.println(file[i].getName()+"\t"+file[i].lastModified()+"\t");
    }
}
}

我们来运行下结果

目录创建成功
目录创建成功
文件创建成功
文件是否可以执行true
文件是否可读true
文件是否可写true
获取文件的绝对路径c:\abc\aa.txt
文件的父路径c:\abc
获取文件的空间大小10842112000
文件的路径c:\abc\aa.txt
判断文件是否是文件true
文件删除成功true
ExtremeGraphics 1495032164330   
gp  1510494790633   
Logs    1500427590035   
Profiles    1500375100648   
### 文件映射 (File Mapping) 的概念 文件映射是一种允许程序通过虚拟内存机制访问磁盘上的文件的技术。它使得应用程序可以像操作内存一样操作文件数据,而无需显式的调用传统的 I/O 函数[^1]。 具体来说,文件映射会将一个文件的内容映射到进程的地址空间中,从而让程序可以通过指针直接读取或修改这些内容。这种技术不仅简化了文件的操作方式,还显著提高了效率,因为底层的数据交换是由操作系统自动管理的。 --- ### 实现过程概述 为了实现文件映射功能,通常需要完成以下几个核心步骤: #### 1. **创建或打开目标文件** 需要先指定一个物理存储设备上的文件作为基础资源。这一步骤涉及创建或者打开一个文件句柄,用于后续操作。此句柄代表的是实际存在于磁盘上的文件对象。 #### 2. **建立文件映射内核对象** 接下来,需定义并初始化一个文件映射对象。这个对象描述了整个文件区域的属性及其预期用途(只读、可写还是共享)。同时也会告知系统所需的缓冲区大小以及具体的访问模式等参数设置。 #### 3. **映射视图至进程地址空间** 最终阶段就是把上述准备好的部分或全部文件范围投射进当前运行线程的有效地址范围内。一旦成功,则任何对该区域内位置的常规内存引用实际上都会触发对应硬盘扇区加载动作。 以下是基于 Windows 平台的一个简单示例代码展示如何利用 API 完成以上流程: ```cpp #include <windows.h> #include <tchar.h> int _tmain() { HANDLE hFile, hMap; LPCTSTR pBuf; // Step 1: Create or open a file. hFile = CreateFile(_T("data.txt"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { /* Handle error */ } // Step 2: Create the file mapping object. hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL); if (!hMap) { /* Handle error and close handles as necessary*/ } // Step 3: Map view of file into address space. pBuf = (LPTSTR)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE); if(!pBuf){/*Handle Error*/} // Now you can use pBuf like normal memory pointer. UnmapViewOfFile(pBuf); CloseHandle(hMap); CloseHandle(hFile); } ``` 这段 C++ 程序片段展示了基本框架下怎样一步步构建起完整的文件映射环境,并提供了初步错误处理逻辑以便于调试期间发现问题所在之处[^2]。 --- ### 应用场景分析 由于其高效性和便捷性的特点,在许多领域都有广泛的应用价值: - 数据库管理系统经常采用这种方式来优化查询响应速度; - 多媒体播放器可能借助于此方法快速定位视频帧序列; - 编辑大型文档软件也可能依赖此类手段提升用户体验流畅度等等。 总之,合理运用文件映射能够极大地改善系统的整体表现力,尤其是在面对海量数据集时尤为明显。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值