一、前言
本次学习应用于文本操作方面,前面我们说到实现文本的不同处理方式
,本次目的是为了实现文件的各种操作。
前面的几篇博客中我们讲到了删除文本中的空白行、给文本中每个字符后加空格或斜杠、统计文档中汉字、数字、字母和空格标点的个数和文本处理中的字频统计(查询指定字词或统计全文字频)。
这里我们分类进行学习文件的一些操作。
二、任务学习
任务要求:
- 完成一个java application应用程序,判别指定路径下指定文件名的文件是否存在。
- 如果指定文件存在,读取并分别显示其修改时间和文件大小等属性。
- 以文本方式打开某一指定路径指定文件名的文本文件,读取其内容并显示。
- 以文本方式向某一指定路径指定文件名的文本文件写入指定文本内容。
1)判别文件是否存在
- 程序代码:
/* 项目名称:Task_Du
* 创建时间:2019年2月26日
* 创建者:Administrator_wz
* 创建地点:kmust
* 功能:判别指定路径下指定文件名的文件是否存在
*/
import java.util.Scanner;//导入java.util包中的Scanner类
import java.io.File;//导入java.io包中的File类
import java.io.IOException;//导入java.io包中的IOException类
public class file1{//创建类名
public static void main(String[] args){//程序的主函数入口
try{//用try-catch语句将逻辑语句包起来,并读取指定的文件
Scanner s = new Scanner(System.in);//获取键盘输入并赋值给字符串
System.out.println("请输入想要操作的文件:");//输入提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file = new File(a);//创建待操作文件
if(file.exists()){//判断操作文件是否存在
System.out.println("该文件已存在,无需创建!");//输出提示信息
}else{//操作文件不存在
file.createNewFile();//创建一个新的操作文件
System.out.println("该文件不存在,现已创建成功!");//输出提示信息
}
}catch(IOException e){//当代码异常时用catch捕获异常
e.printStackTrace();//打印出现的异常
}
}
}
- 执行结果:
2)读取文件的修改时间、大小等属性
/* 项目名称:Task_Du
* 创建时间:2019年2月26日
* 创建者:Administrator_wz
* 创建地点:kmust
* 功能:读取并显示文件的修改时间和大小等属性
*/
import java.util.Scanner;//导入java.util包中的Scanner类
import java.io.File;//导入java.io包中的File类
import java.io.IOException;//导入java.io包中的IOException类
import java.util.Date;//导入java.util包中的Date类
public class file2{//创建类名
public static void main(String[] args){//程序的主函数入口
try{//用try-catch语句将逻辑语句包起来,并读取指定的文件
Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
System.out.println("请输入想要操作的文件:");//输入提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file = new File(a);//创建待操作文件
if(file.exists()){//判断操作文件是否存在
System.out.println("\n该文件已存在,无需创建!");//输出提示信息
System.out.println("该文件有"+file.length()+"字节");//输出文件字节数
System.out.println("该文件最后的修改时间是:"+new Date(file.lastModified()));//输出文件的修改时间
}else{//操作文件不存在
file.createNewFile();//创建一个新的操作文件
System.out.println("\n该文件不存在,现已创建成功!");//输出提示信息
System.out.println("该文件有共有"+file.length()+"字节");//输出文件字节数
System.out.println("该文件最后的修改时间是:"+new Date(file.lastModified()));//输出文件的修改时间
}
}catch(IOException e){//当代码异常时用catch捕获异常
e.printStackTrace();//打印出现的异常
}
}
}
3)读取并显示指定文本文件的内容
/* 项目名称:Task_Du
* 创建时间:2019年2月28日
* 创建者:Administrator_wz
* 创建地点:kmust
* 功能:读取指定文本文件的内容并显示
*/
import java.io.*;//导入java.io包中的所有类
import java.io.FileReader;//导入java.io包中的FileReader类
import java.util.Scanner;//导入java.util包中的Scanner类
import java.util.Date;//导入java.util包中的Date类
public class file3{//创建类名
public static void main(String[] args)throws IOException{//程序的主函数入口
try{//用try-catch语句将逻辑语句包起来,并读取指定的文件
Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
System.out.println("请输入想要操作的文件:");//输入提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
FileReader fr = new FileReader(a);//文本文件读取流
BufferedReader br = new BufferedReader(fr);//读取文件的内容
String str = null;//创建一个字符串字符
File file = new File(a);//创建写入文件
if(file.exists()){//判断操作文件是否存在
System.out.println("\n该文件已存在,无需创建!");//输出提示信息
System.out.println("该文件有"+file.length()+"字节");//输出文件字节数
System.out.println("该文件最后的修改时间是:"+new Date(file.lastModified()));//输出文件的修改时间
System.out.println("文本的内容为:\n");//输出提示信息
while((str=br.readLine())!=null){//按行读取
System.out.println(str);//打印文本的内容
}
}else{//操作文件不存在
file.createNewFile();//创建一个新的操作文件
System.out.println("\n该文件不存在,现已创建成功!");//输出提示信息
System.out.println("该文件有共有"+file.length()+"字节");//输出文件字节数
System.out.println("该文件最后的修改时间是:"+new Date(file.lastModified()));//输出文件的修改时间
/*while((str=br.readLine())!=null){
System.out.println(str);
}*/
}
}catch(Exception e){//当代码异常时用catch捕获异常
e.printStackTrace();//打印出现的异常
}
}
}
4)向指定文本文件写入指定文本内容
/* 项目名称:Task_Du
* 创建时间:2019年2月28日
* 创建者:Administrator_wz
* 创建地点:kmust
* 功能:向指定文本文件写入指定文本内容
*/
import java.io.*;//导入java.io包中的所有类
import java.io.FileReader;//导入java.io包中的FileReader类
import java.util.Scanner;//导入java.util包中的Scanner类
import java.util.Date;//导入java.util包中的Date类
public class file4{//创建类名
public static void main(String[] args)throws IOException{//程序的主函数入口
try{//用try-catch语句将逻辑语句包起来,并读取指定的文件
String str1 = null;//创建一个字符串字符
String str2 = null;//创建一个字符串字符
Scanner s1 = new Scanner(System.in);//获取键盘输入并赋值给s1字符串
System.out.println("请输入想要操作的文本文档:");//输入提示信息
String a = s1.nextLine();//定义字符串变量,并赋值为用户输入的信息
FileReader fr = new FileReader(a);//文本文件读取流
BufferedReader br = new BufferedReader(fr);//读取文件的内容
StringBuffer c = new StringBuffer();//定义
File file1 = new File(a);//定义待写入文件
if(file1.exists()){//判断操作文件是否存在
System.out.println("\n该文件已存在,无需创建!");//输出提示信息
System.out.println("该文件有"+file1.length()+"字节");//输出字节信息
System.out.println("该文件最后的修改时间是:"+new Date(file1.lastModified()));//输出文件的修改时间
System.out.println("文本的内容为:\n");//输出提示信息
while((str1=br.readLine())!=null){//按行读取
System.out.println(str1);//输出文本的每一行
}
//将文本文件中的内容写入另一个文本
Scanner s2 = new Scanner(System.in);//获取键盘输入并赋值给s2字符串
System.out.println("请输入想要写入的文本文档:");//输入提示信息
String b = s2.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file2 =new File(b);;//创建待写入文件
if(!file2.exists()) {//if语句判定指定路径下该文件是否存在
file2.createNewFile();//若不在则在指定路径下新建该文件
}
InputStreamReader isr=new InputStreamReader(new FileInputStream(a));//读入数据流方式
BufferedReader read=new BufferedReader(isr);//写入数据流方式
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(b));//读入数据流方式
BufferedWriter write=new BufferedWriter(osw);//写入数据流方式
while((str2=read.readLine())!=null){//按行读取文本数据
write.append(str2+"\r\n");//每一行依次输出
}
write.close();//关闭流
read.close();//关闭流
System.out.println("所需内容已写入指定文档!");//输出提示信息
}else{//操作文件不存在
file1.createNewFile();//创建新文件夹
System.out.println("\n该文件不存在,现已创建成功!");//输出提示信息
System.out.println("该文件有共有"+file1.length()+"字节");//输出文件字节数
System.out.println("该文件最后的修改时间是:"+new Date(file1.lastModified()));//输出文件的修改时间
}
}catch(Exception e){//当代码异常时用catch捕获异常
e.printStackTrace();//打印异常
}
}
}
参考链接:
https://blog.csdn.net/wangrui8431/article/details/78967642
https://blog.csdn.net/e437032193/article/details/6625829
https://blog.csdn.net/qq_18972767/article/details/78488491
https://blog.csdn.net/Truong/article/details/8277000
https://blog.csdn.net/xuxu198899223/article/details/18081381
https://blog.csdn.net/projectNo/article/details/76971433
https://blog.csdn.net/qq_29663071/article/details/50883768
https://blog.csdn.net/weixin_40258804/article/details/78203253