S2 第八章_Fil I/O

本文详细介绍了使用Java进行文件操作的方法,包括文件的创建、读取、写入等基本操作及异常处理。通过实例展示了如何获取文件的各种属性如名称、路径、大小等,并演示了文件的读写流程。

import java.io.File;//  I/O input 输入 output 输出
File file = new File("d:/123.txt");//指向这个文件(文件路径)
		System.out.println(file.getName());//名字
		System.out.println(file.getPath());//相对路径
		System.out.println(file.getAbsolutePath());//绝对路径
		System.out.println(file.getParent());//上级路径
                System.out.println(file.length());//字节长度
                System.out.println(file.exists());//判断文件是否存在
                System.out.println(file.isFile());//是不是文件
	        System.out.println(file.isDirectory());//是不是文件夹
try {
						file.createNewFile();//创建一个同名空白文件
					} catch (Exception e) {
						// TODO: handle exception
					}
					file.delete()//删除

读文件是指把文件的数据读取到内存

InputStream is = new FileInputStream(file);
			System.out.println((char)is.read());//读取第一个字

写文件是指把内存的数据写入文件


读数据用输入流

File file = new File("d:/123.txt");
		InputStream is = null;
		try {
			is = new FileInputStream(file);
			byte [] bs = new byte[5];
			int length = is.read(bs);
			
			while (length != -1) {//避免一直循环
				for (byte b : bs) {//读出的数据放在bs数组中了
					System.out.print((char)b);//读取第一个字
				}
				length = is.read(bs);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if(is != null){
				try {
					is.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

写数据用输出流

try {
			os.write("123456".getBytes(),3,2);//从下标为三开始添加  ,添加几个
			os.write("123456".getBytes(),0,"123456".length());

字符流:

public class Test_10 {
	public static void main(String[] args) {
		Writer writer = null;
		try {
			writer = new FileWriter(new File("d:/123.txt"));
			writer.write(97);
			writer.flush();//刷新
		} catch (IOException e) {
			
			e.printStackTrace();
		}finally{
			try {
				writer.close();
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}
	}
}

二进制读文件:

FATFS 文件系统中 `FRESULT` 枚举包含了一系列错误码,以下是一些常见错误码的含义及对应解决办法: #### 1. `FR_OK (0)` 含义:操作成功,没有错误。 解决办法:无需处理,可继续进行后续的文件操作。 #### 2. `FR_DISK_ERR (1)` 含义:由于底层磁盘 I/O 函数中的错误,而导致该函数失败。 解决办法: - 检查存储介质的硬件连接是否正常,如 SPI 接口、SD 卡插槽等。 - 检查底层磁盘驱动程序是否正确实现,确保读写操作能够正常进行。 #### 3. `FR_INT_ERR (2)` 含义:由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 解决办法: - 尝试对存储介质进行格式化,以重建 FAT 结构。 ```c FATFS fs; FRESULT res; BYTE work[_MAX_SS]; res = f_mkfs("1:", FM_FAT, 0, work, _MAX_SS); if (res != FR_OK) { // 处理格式化失败的情况 } ``` - 检查 FATFS 库的配置是否正确,确保没有冲突或错误的设置。 #### 4. `FR_NOT_READY (3)` 含义:由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 解决办法: - 检查存储介质是否正确插入,如 SD 卡是否插好,外部 Flash 是否连接正常。 - 检查存储介质的电源供应是否稳定。 #### 5. `FR_NO_FILE (4)` 含义:指定的文件不存在。 解决办法: - 检查文件路径和文件名是否正确。 - 如果需要创建文件,使用 `f_open` 函数并指定创建模式。 ```c FIL file; FRESULT res; res = f_open(&file, "1:/test.txt", FA_CREATE_ALWAYS | FA_WRITE); if (res != FR_OK) { // 处理文件打开失败的情况 } ``` #### 6. `FR_NO_PATH (5)` 含义:指定的路径不存在。 解决办法: - 检查文件路径是否正确,确保路径中的目录都存在。 - 如果需要创建目录,使用 `f_mkdir` 函数。 ```c FRESULT res; res = f_mkdir("1:/test_dir"); if (res != FR_OK) { // 处理目录创建失败的情况 } ``` #### 7. `FR_INVALID_NAME (6)` 含义:文件名无效,可能包含非法字符或格式错误。 解决办法: - 确保文件名符合 FAT 文件系统的命名规则,避免使用特殊字符。 #### 8. `FR_DENIED (7)` 含义:由于权限问题或文件已被打开,操作被拒绝。 解决办法: - 检查文件的打开模式和权限设置,确保有足够的权限进行操作。 - 确保文件没有被其他程序或进程占用。 #### 9. `FR_EXIST (8)` 含义:尝试创建的文件已经存在。 解决办法: - 根据需求选择覆盖现有文件或使用其他文件名。 #### 10. `FR_INVALID_OBJECT (9)` 含义:文件对象无效。 解决办法: - 确保文件对象在使用前已经正确初始化。 #### 11. `FR_WRITE_PROTECTED (10)` 含义:存储介质被写保护,无法进行写操作。 解决办法: - 检查存储介质的写保护开关,将其关闭。 #### 12. `FR_INVALID_DRIVE (11)` 含义:指定的驱动器号无效。 解决办法: - 检查驱动器号是否正确,确保与实际的存储介质对应。 #### 13. `FR_NOT_ENABLED (12)` 含义:对应的驱动器没有被挂载或初始化。 解决办法: - 确保使用 `f_mount` 函数正确挂载文件系统。 #### 14. `FR_NO_FILESYSTEM (14)` 含义:未检测到有效的文件系统。 解决办法: - 对存储介质进行格式化,以创建有效的文件系统。 ```c FATFS fs; FRESULT res; BYTE work[_MAX_SS]; res = f_mkfs("1:", FM_FAT, 0, work, _MAX_SS); if (res != FR_OK) { // 处理格式化失败的情况 } ``` - 检查存储介质是否损坏。 #### 15. `FR_MKFS_ABORTED (15)` 含义:格式化操作被中止。 解决办法: - 检查格式化过程中是否有错误发生,如存储介质损坏、电源中断等。 #### 16. `FR_TIMEOUT (16)` 含义:操作超时,可能是由于存储介质响应缓慢或其他原因。 解决办法: - 检查存储介质的性能和状态,确保其正常工作。 - 增加操作的超时时间设置。 #### 17. `FR_LOCKED (17)` 含义:由于文件被锁定,操作被拒绝。 解决办法: - 确保文件没有被其他程序或进程锁定。 #### 18. `FR_NOT_ENOUGH_CORE (18)` 含义:内存不足,无法完成操作。 解决办法: - 检查系统的内存使用情况,释放不必要的内存。 - 优化程序的内存使用,减少内存占用。 #### 19. `FR_TOO_MANY_OPEN_FILES (19)` 含义:打开的文件数量超过了系统限制。 解决办法: - 关闭不必要的文件,减少打开的文件数量。 - 增加系统允许打开的文件数量限制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值