博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA学习(八):JAVA文件编程
阅读量:6093 次
发布时间:2019-06-20

本文共 7232 字,大约阅读时间需要 24 分钟。

本博文主要介绍JAVA文件编程,主要包括通过JDK提供的I/O来从文件读取和写入数据、字节流读写文件的方法、字符流读写文件的方法、如何使用File类创建、删除和遍历文件与目录等操作。

不管是C/C++还是JAVA,都可能生成一些持久性数据,我们可以将数据存储在文件或数据库中,但是对于一些简单性的数据,如果存储在数据库中,则会显得有点得不偿失了,那么,如何在JAVA中将数据存储在文件中就成了中小型程序必须掌握的基本技能了。

下面一一讲解File类简介与文件的创建、删除、重命名,文件夹的创建、重命名、删除,文件属性的读取,文件属性的设置,遍历文件夹,文件的简单读写,并且都给出示例代码。

1、File类简介与文件的创建、删除、重命名

主要内容包括File类,File类用来代表文件或文件夹,通过File类,可以对文件与文件夹执行丰富的操作,并且可以获取文件的路径、大小、文件名等信息;通过文件类的creatNewFile()方法创建文件,通过delete()方法删除文件,使用renameTo()方法重命名文件。

import java.io.File;import java.io.IOException;public class HelloFile {	public static void main(String[] args) {		// TODO Auto-generated method stub		File file = new File("hello.txt");			//默认存在相对路径下,即该工程下//		File file = new File("bin/hello.txt");		//文件存在于指定的绝对路径下//		File file = new File("../hello.txt");		//文件存在于该工程路径的上一级//		File file = new File("../../hello.txt");	//文件存在于该工程路径的上一级的上一级		//判断文件是否存在		if(file.exists())		{			//打印“文件”属性			System.out.println(file.isFile());			//打印“路径(文件夹)”属性			System.out.println(file.isDirectory());			//			//同目录重命名//			File nameto = new File("NewHello.txt");//			file.renameTo(nameto);			//			//跨目录重命名//			//注意1:文件夹结构必须处于同一个分区//			//注意2:文件若处于不同的分区,需要使用文件的拷贝,而不是重命名//			File nameto = new File("src/NewHello.txt");//			file.renameTo(nameto);					//			//删除文件//			file.delete();//			System.out.println("文件删除成功!");		}		else		{			System.out.println("文件不存在!");			try {				file.createNewFile();				System.out.println("文件已经成功创建!");			} catch (IOException e) {				System.out.println("文件无法创建!");			}		}	}}

2、文件夹的创建、重命名、删除

主要内容包括通过使用mkdir()与mkdirs()方法创建文件夹,使用delete()方法删除文件夹,使用renameTo()方法重命名文件夹

import java.io.File;public class HelloFolder {	public static void main(String[] args) {		//创建单级文件夹:folder.mkdir()		File folder1 = new File("MyFolder1");//		if(folder1.mkdir())//		{//			System.out.println("单级文件夹创建完成!");//		}//		else//		{//			if(folder1.exists())//			{//				System.out.println("单级文件夹已经存在,不用创建!");//			}//			else//			{//			System.out.println("单级文件夹创建失败!");//			}//		}				//创建多级文件夹:folder.mkdirs()		File folder2 = new File("MyFolder2/one/two");//		if(folder2.mkdirs())//		{//			System.out.println("多级文件夹创建完成!");//		}//		else//		{//			if(folder2.exists())//			{//				System.out.println("多级文件夹已经存在,不用创建!");//			}//			else//			{//			System.out.println("多级文件夹创建失败!");//			}//		}		//		//文件夹重命名//		//重命名同一级文件夹//		File newfolder1 =new File("MyFolder3");//		if(folder1.renameTo(newfolder1))//		{//			System.out.println("Done!");//		}else{//			System.out.println("Fail!");//		}//		//重命名不同级的文件夹,有点类似于移动,但仍归类于重命名//		//注意:处于同一分区中//		File newfolder2 =new File("MyFolder2/two");//		if(folder2.renameTo(newfolder2))//		{//			System.out.println("Done!");//		}else{//			System.out.println("Fail!");//		}				//删除文件夹		if(folder1.delete())		{			System.out.println("删除完成!");		}else{			System.out.println("删除失败!");		}//		//注意:只能删除空文件夹//		folder2.delete();	}}

3、文件属性的读取

主要内容包括判断文件是否存在、文件名称、路径、文件大小、是否被隐藏、是否可读可写、是否为文件夹等。

import java.io.File;public class ReadFileProperty {	public static void main(String[] args) {		File file = new File("text.txt");				//判断文件是否存在		System.out.println("文件是否存在"+file.exists());				//读文件名称		System.out.println("读取文件名称"+file.getName());				//读取文件路径(相对路径)		System.out.println("读取文件相对路径"+file.getPath());				//读取绝对路径		System.out.println("读取文件绝对路径"+file.getAbsolutePath());				//读取文件父级路径		System.out.println("读取文件父级路径"+file.getParent());//返回相对路径的上一级		System.out.println("读取文件父级路径"+ new File(file.getAbsolutePath()).getParent());//返回绝对路径的上一级				//读取文件大小		System.out.println("读取文件大小"+file.length()+"byte");		System.out.println("读取文件大小"+(float)file.length()/1000+"KB");				//判断文件是否被隐藏		System.out.println("判断文件是否被隐藏"+file.isHidden());			//判断文件是否可读		System.out.println("判断文件是否可读"+file.canRead());				//判断文件是否可写		System.out.println("判断文件是否可写"+file.canWrite());				//判断文件是否为文件夹		System.out.println("判断文件是否为文件夹"+file.isDirectory());			}}

4、文件属性的设置

主要内容包括将文件设定为可读、可写或只读。

import java.io.File;import java.io.IOException;public class SetFileProperty {	public static void main(String[] args) {		File file = new File("text.file");		if(file.exists())		{			System.out.println("文件存在,不用创建!");						//先确认文件的属性			System.out.println("可读吗?"+file.canRead());			System.out.println("可写吗?"+file.canWrite());			System.out.println("可执行吗?"+file.canExecute());			//将文件设定为可写	//		file.setWritable(false);//true可写false不可写						//将文件设定为可读	//		file.setReadable(false);//true可读false不可读						//将文件设定为只读			file.setReadOnly();						//再确认文件的属性			System.out.println("\n");			System.out.println("可读吗?"+file.canRead());			System.out.println("可写吗?"+file.canWrite());			System.out.println("可执行吗?"+file.canExecute());					}else{			System.out.println("文件不存在,请创建一个新文件!");			try {				file.createNewFile();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}							}}

5、遍历文件夹

主要内容包括通过使用listFiles()方法获取文件夹中的所有项目,并且通过递归显示完整的层级结构。

package com.hqu.filetraverse.main;import java.io.File;public class Traverse {	public static void main(String[] args) {		printFiles(new File("/Job/Java/workspace/FileTraverse"),1);//使用绝对路径//		printFiles(new File("../FileTraverse"),1);//默认使用相对路径	}		public static void printFiles(File dir,int tab) {		if(dir.isDirectory())		{			File next[] = dir.listFiles();		//返回值是文件和文件夹,存在于数组中			for(int i=0;i

6、文件的简单读写

主要内容包括FileInputStream和FileOutputStream的使用方法,实现文本文件的读取和写出。

package com.hqu.rwfile;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;public class ReadFile {	public static void main(String[] args) {		File file = new File("text.txt"); //事先创建好,并输入内容		if(file.exists()){//			System.out.println("exit");			System.err.println("exit");//系统输出			try {								//准备用于文件输入的三个流				FileInputStream fis = new FileInputStream(file);//文件的输入流属于字节流				InputStreamReader isr = new InputStreamReader(fis, "UTF-8");//InputStreamReader属于字符流,"UTF-8"为指定文本编码,防止乱码				BufferedReader br = new BufferedReader(isr);//带有缓冲区的Reader								String line;	//用于临时存放读取到的数据				while((line = br.readLine()) != null){					System.out.println(line);				}								//关闭输入流				br.close();				isr.close();				fis.close();							} catch (FileNotFoundException e) {				e.printStackTrace();			} catch (UnsupportedEncodingException e) {				e.printStackTrace();			} catch (IOException e) {				e.printStackTrace();			} 		}						File newfile = new File("newtext.txt");//无需创建,写入时系统自动创建文件		try {						FileOutputStream fos = new FileOutputStream(newfile);			OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");			BufferedWriter bw = new BufferedWriter(osw);						bw.write("abcd\n");			bw.write("efgh\n");			bw.write("ijkl\n");			bw.write("mnop");//			bw.write("长歌行 汉乐府");//			bw.write("青青园中葵,朝露待日晞。\n");//			bw.write("阳春布德泽,万物生光辉。\n");//			bw.write("常恐秋节至,焜黄华叶衰。\n");//			bw.write("百川东到海,何时复西归?\n");//			bw.write("少壮不努力,老大徒伤悲!\n");						bw.close();			osw.close();			fos.close();						System.out.println("写入完成!");					} catch (FileNotFoundException e) {			e.printStackTrace();		} catch (UnsupportedEncodingException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		}	}}

转载地址:http://gjqwa.baihongyu.com/

你可能感兴趣的文章
C - Surprising Strings
查看>>
hibernate里的generator中class =value介绍
查看>>
activity-alias的使用
查看>>
第36周日
查看>>
SQL Server 无法打开物理文件的 2 种解决办法
查看>>
推荐一款好用的文件/文件夹对比工具 —— Beyond Compare
查看>>
java设计模式--结构型模式--桥接模式
查看>>
JS window.open()属性
查看>>
手机管理中的应用【6】——电源管理篇
查看>>
【Android工具】DES终结者加密时报——AES加密演算法
查看>>
效果收集-点击显示大图
查看>>
Android 开机过程PMS分析
查看>>
找不到com.apple.Boot.plist
查看>>
使用openssl创建自签名证书及部署到IIS教程
查看>>
入门视频采集与处理(学会分析YUV数据)
查看>>
java keytool详解
查看>>
记一次Redis被攻击的事件
查看>>
Debian 的 preinst, postinst, prerm, 和 postrm 脚本
查看>>
socket编程的select模型
查看>>
IDEA和Eclipse经常使用快捷键(Win Mac)
查看>>