`

Java文件操作小结

 
阅读更多

Java文件操作小结

        对于文件操作,个人认为并无太大的技术难点,主要还是多花时间去运用,相信熟能生巧哈,只要掌握其核心内容文件输入输出流,注意一些编写代码的常识即可。下面直接用代码展示对File文件类、FileInputStream文件输入流、FileOutputStream文件输出流的简单应用。

    

 定义一个MyFile类,类中包含了:

1、定义一个测试文件的方法       testFile() ;

2、查找子目录的方法                   find(File file, String findName) ;

3、给文件写入数据的方法           writeFile() ;

4、读取文件数据的方法               readFile() ;

5、文件复制的方法                       copyFile(File a,File b) ;

6、加密文件的方法                       privateFile(File a) ;

 

以下为代码示例:

1、

//定义一个测试文件的方法
	public void testFile(){
		//实例化一个File对象,其路径名为F盘下的test目录
		File file = new File("F:/test.txt");
		//测试此路径名表示的目录是否存在 且 是否是一个目录
		if(!file.exists() &&! file.isDirectory()){
			try {
				//创建一个文件
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//若是一个目录,输出路径名
		if(file.isFile())
			System.out.println(file.getAbsolutePath());
	}

 2、查找子目录的方法 

 

/**
	 * 列出所有字目录的方法
	 */
	public void find(File file, String findName){
		//定义一个File类数组,存有所有子目录名
		File[] sonFiles = file.listFiles();
		if(sonFiles != null){
			for(int i=0; i < sonFiles.length; i++){
				File f = sonFiles[i];
				if(f.isFile()){
					if(f.getName().indexOf(findName) != -1){
						System.out.println(f.getAbsolutePath());
					}
				} else {
					find(f, findName);
				}
			}
		}
	}

 

 

 

 3、给文件写入数据的方法

 

/**
	 * 给文件写入数据的方法
	 */
	public void writeFile(){
		try {
			//实例化一个文件输出流对象,并且定义为在文件数据尾处写入数据
			FileOutputStream fos = new FileOutputStream("F:/test.txt",true);
			//实例化一个字符数组对象
			String content = "我的文件格式总结";
			//将String数组转化为byte型数组
			byte[] bytes = content.getBytes("gb2312");
			//将byte数组中的数据一次性写入文件
			fos.write(bytes);
			//关闭文件
			fos.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

 4、读取文件数据的方法

 

/**
	 * 读取文件数据的方法
	 */
	public void readFile(){
		try {
			//实例化一个文件输入流对象
			FileInputStream fis = new FileInputStream("F:/test.txt");
			//实例化一个长度与文件数据字节长度相等的byte数组(fis.available()返回可读取的字节长度)
			byte[] bytes = new byte[fis.available()];
			//将所有数据一次性读入数组
			fis.read(bytes);
			//关闭文件
			fis.close();
			
			//定义一个字符串用于输出数据
			String contend = new String(bytes,"GB2312");
			System.out.print(contend);
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

 

 5、文件复制的方法 

 

 

 

 

/**
	 * 文件复制的方法(将文件a的内容复制到文件b中)
	 * @throws IOException 
	 */
	public void copyFile(File a,File b) throws IOException{
		try {
			//实例化一个连接到文件a的文件输入流对象
			FileInputStream fis = new FileInputStream(a);
			//实例化一个连接到文件b的文件输出流对象
			FileOutputStream fos = new FileOutputStream(b,true);
            int c = fis.read();
			
			while(c != -1){
				c = c+1;
				
				fos.write(c);
				c = fis.read();
			}
			
			fis.close();
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

 6、加密文件的方法 

 

/**
	 * 按协议打开文件,加密文件原理(将a文件加密)
	 * @throws IOException 
	 */
	public void privateFile(File a) throws IOException{
		//实例化一个连接到文件a的文件输入流对象
		FileInputStream fis = new FileInputStream(a);
		//实例化一个连接到文件a的文件输出流对象(覆盖源文件)
		FileOutputStream fos = new FileOutputStream(a,false);
		//实例化一个长度与文件数据字节长度相等的byte数组
		byte[] bytes = new byte[fis.available()];
		//将所有数据一次性读入数组
		fis.read(bytes);
		//按一定的协议改变byte中的数据,协议可自定义
		for(int i=0; i<bytes.length;i++){
			byte b = bytes[i];
			b = (byte)(b-1);
			bytes[i] = b;
		}
		//最后将byte数组读入a,完成加密
		fos.write(bytes);
	}	

 

 

最后补充需要注意的两点:

 

1、JAVA中由于安全性的强调所以许多方法必须抛出异常才能在编译的时候不出现错误,解决这个问题的方法就是按语法添加 throws Exception或try{} catchtry{}如果没有以上任意一者存在的话,所有文件读写操作都报错;

2、打开一个文件,往里面写东西,如果忘了关闭,在buffer中的内容不会写到文件里面去,也就是有时候明明已经写入内容了,当你打开文件看了下发现会少掉了一部分。而如果在程序推出前close了文件流,则不会发生这种情况。所以文件用完了无论是读写都要养成关闭的好习惯。

 

 

分享到:
评论

相关推荐

    java初学者的工具ppt文件

    小结 永远记住:自始至终,实践是学习Java技术历程中极其重要的一环。脱离了实践,是学不好技术的! Java学习、实践之路依然没有银弹,况且一步步走来,要学的东西很多,勤奋是金! 善于利用Internet上众多的资源,多...

    Java典型模块

    第4篇 文件操作和访问 18.1 文件属性查看器原理 18.1.1 项目结构框架分析 18.1.2 项目功能业务分析 18.2 文件属性查看器项目 18.2.1 实现显示文件信息的自定义窗口 18.2.2 自定义窗口的显示 18.3 知识点扩展——文件...

    Java语言的科学与艺术 斯坦福大学经典教材

    11.11 编程练习 第12章 搜索与排序 12.1 搜索 12.2 排序 12.3 评估算法效率 12.4 使用数据文件 12.5 小结 12.6 复习题 12.7 编程练习 第13章 数组与ArrayList类 13.1 ArrayList类回顾 13.2 HashMap类 13.3 Java集合...

    Java优化编程(第2版)

    1.2 java文件注释头 1.3 包的声明与引用 1.4 类与接口的声明 1.5 java源文件编排格式 代码行长度与折行规则 1.6 程序注释 1.7 变量的声明初始化与放置 1.7.1 变量声明 1.7.2 变量初始化 1.7.3 变量放置 1.8 java程序...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    疯狂JAVA讲义

    1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种基本结构 25 2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序  2.7 小结  2.8 复习题  2.9 编程练习 第3...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    21天学通Java-由浅入深

    87 5.3 数组操作的举例 88 5.3.1 数组元素值的复制 88 5.3.2 数组元素的排序 90 5.3.3 在数组里查找指定元素 91 5.3.4 利用数组打印26个英文字母 92 5.4 综合练习 93 5.5 小结 94 5.6 习题 94 第二篇 面向对象篇 第6...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     1.3 小结  1.4 思考题 第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 ...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    感谢大家的支持,我终于升级了,上传限制得到提升,所以把资源整合下!希望大家一如既往 Java SE实践教程 pdf格式电子书 下载(一) 更新 ...Java SE实践教程 pdf格式电子书 下载(二) 更新 ...13.4 小结 387

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    java获取文件扩展名的方法小结【正则与字符串截取】

    主要介绍了java获取文件扩展名的方法,结合实例形式分析了使用正则与字符串截取两种获取扩展名的操作技巧,需要的朋友可以参考下

    Java Web程序设计教程

    &lt;&lt;Java Web程序设计教程.pdf&gt;&gt;人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 ...本章小结 342

    JAVA案例开发集锦.part1

    第1章 Java与Applet/1 案例l 图形按钮/1 案例2 模拟工具条/8 ...第5章 Java与文件操作/220 第6章 Java与安全/266 第7章 Java与数据库/312 第8章 Java与Servlet/354 第9章 Java与网络/400 第10章 Java综合实例/453

    JAVA案例开发集锦.part3

    第1章 Java与Applet/1 案例l 图形按钮/1 案例2 模拟工具条/8 ...第5章 Java与文件操作/220 第6章 Java与安全/266 第7章 Java与数据库/312 第8章 Java与Servlet/354 第9章 Java与网络/400 第10章 Java综合实例/453

    JAVA案例开发集锦.part2

    第1章 Java与Applet/1 案例l 图形按钮/1 案例2 模拟工具条/8 ...第5章 Java与文件操作/220 第6章 Java与安全/266 第7章 Java与数据库/312 第8章 Java与Servlet/354 第9章 Java与网络/400 第10章 Java综合实例/453

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd...

    java基础入门教程

    4 软 件 最 终 产 品 :用 Java 语 言 开 发 的 软 件 可 以 具 有 可视化 、 可 听 化 、 可 操作 化 的 效 果 ,这 要 比 电 视 、 电 影 的 效果 更 为 理 想 ,因 为 它 可 以做 到 "即 时 、 交 互、 动 画 与 ...

Global site tag (gtag.js) - Google Analytics