`

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 IO流小结

    JAVA IO流小结 JAVA IO流是指Java语言中用来实现输入/输出操作的机制。IO流是指任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象。他屏蔽了实际的I/O设备处理数据的细节。 一、流的定义和分类 流是...

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    java写入文件操作的几种方法

    Java 写入文件操作的几种方法 Java 语言中提供了多种写入文件的方法,每种方法都有其特点和应用场景,本文将详细介绍 Java 中写入文件的几种不同方法,供读者根据实际需求选择合适的方法。 FileWriter 写入文件 ...

    Java个人学习小结

    ### Java个人学习小结 #### Java发展史及重要里程碑 - **起源与发展**: Java 的起源可以追溯到 1992 年,当时的 Sun Microsystems 公司开发了一种名为 Oak 的编程语言,最初是为了家用电器的智能化而设计的。然而...

    java文件(File)小结.doc

    【文件(File)小结】 在Java编程中,文件(File)是数据持久化存储的重要方式,它不同于内存中临时存储的数据。File类是Java.io包中的核心类,提供了对文件和目录的操作。通过File对象,我们可以进行创建、删除、...

    JAVA 模块知识小结

    JAVA模块知识小结涵盖的内容非常广泛,包含了Java技术栈中的多个重要知识点,从基础的开发工具到框架、数据库以及编程语言本身,以下是对给定文件中提到的各项技术的详细知识点梳理: 1. Hibernate和Ibatis ...

    文件读写操作小结

    本文将结合标题“文件读写操作小结”和提供的标签“源码”、“工具”,深入探讨文件读写的核心概念、常见方法以及在实际应用中的注意事项。 1. 文件系统基础 文件系统是操作系统用于组织和管理磁盘上数据的一种方式...

    Java基础知识小结

    ### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...

    java文件操作详细介绍

    ### Java文件操作详细介绍 #### 一、File类 **File类简介** `File`类是Java中用于处理文件和目录的基本工具。虽然它并不直接涉及数据的读写操作,但它是进行文件操作不可或缺的一部分,提供了丰富的API来获取文件...

    java调用RMI小结

    Java RMI 提供了一种透明的远程调用方式,使得开发者可以像操作本地对象一样操作远程对象。 在Java RMI应用开发中,有几个关键点需要注意: 1. **远程服务接口定义**: - 接口是RMI的核心,它定义了可供远程调用...

    java_文件复制(带有编码类型)

    小结 在本文中,我们讨论了如何使用 Java 将文件从一个位置复制到另一个位置,并且带有编码类型。我们学习了使用 BufferedWriter 和 BufferedReader 实现文件复制的方法,以及使用 OutputStreamWriter 实现文件复制...

    C++,java读写二进制文件方法介绍.docx

    "C++,java读写二进制文件方法介绍" ...小结 本文介绍了C++和Java中读写二进制文件的方法,包括文件流、文件指针的移动、文件操作等知识点。通过本文,读者可以了解到C++和Java中读写二进制文件的基本方法和注意事项。

    Java Socket通信小结

    Java Socket通信小结 在Java编程中,Socket通信是一种基于TCP/IP协议的网络通信方式,它允许两个应用程序之间建立可靠的、双向的数据传输连接。本文将深入探讨Java Socket通信的基础知识,以及如何通过Java实现一个...

    文件传送小结

    在IT行业中,文件传送是一个非常基础且重要的操作,...通过学习这些知识点,开发者可以更好地理解和实现文件传输功能,提升项目中的文件操作效率和安全性。如果能获取到具体的博文内容,我们可以深入探讨每一个细节。

    java基础小结

    《Java基础小结》 Java,作为一种广泛应用的编程语言,以其跨平台、面向对象的特点深受开发者喜爱。这篇博文和随附的PDF笔记旨在总结Java的基础知识,帮助初学者巩固理解,同时也为有经验的开发者提供回顾参考。 1...

    在JAVA文件中获取该项目的相对路径.doc

    4. 小结 在 JAVA 文件中获取项目的相对路径非常重要,特别是在 JSP/Servlet 中。通过了解绝对路径和相对路径的概念,我们可以更好地获取当前应用的相对路径和绝对路径,从而更好地处理文件和目录的操作。

    core java 小结

    Cavaj是一款强大的Java反编译工具,它能够将Java字节码(.class文件)反编译为源代码(.java文件),这对于学习和理解Java编译后的字节码结构非常有帮助。通过Cavaj,开发者可以查看和分析第三方库或框架的内部工作原理...

    java课程小结.rar_北京理工大学JAVA课程

    9. **输入输出(I/O)**:Java的I/O流系统是处理数据传输的基础,包括文件操作、网络通信等。 10. **多线程**:Java内置了对多线程的支持,可以创建Thread对象或者实现Runnable接口来实现并发执行。 11. **反射与...

    java笔试题小结

    ### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...

Global site tag (gtag.js) - Google Analytics