输入/输出流:
1.输入流:表示从一个源读取数据。
2.输出流:表示向一个目标写数据。
例程学习:创建文件,并用不同的类对文件进行写入、读出操作。
import java.io.*;
import java.lang.Exception;
import java.text.SimpleDateFormat;
public class FileTest{ //创建FileTest类
public static void main(String[] args){ //FileTest类的主方法
File file = new File("word.txt"); //利用File类实例化文件对象,文件名为word,文件类型为txt
if(file.exists()){ //判断需要创建的文件是否存在
file.delete(); //如果存在就删除文件
System.out.println("文件已删除!");
try{ //try语句块捕捉可能出现的异常
file.createNewFile(); //利用File类的方法creatNewFile()创建文件
System.out.println("文件已创建!"); //文件创建
}catch(Exception e){
e.printStackTrace(); //若无法创建,显示异常
}
}else{ //如果不存在
try{ //try语句块捕捉可能出现的异常
file.createNewFile(); //利用File类的方法creatNewFile()创建文件
System.out.println("文件已创建!"); //文件创建
}catch(Exception e){
e.printStackTrace(); //若无法创建,显示异常
}
}
if(file.exists()){
System.out.println("文件存在,文件信息如下:");
String name = file.getName(); //定义一个字符串变量name读取文件名
String address = file.getParent(); //定义一个字符串变量address获取文件的父路径
String abd_address = file.getAbsolutePath(); //获取文件的绝对路径
long length = file.length(); //定义一个长整型变量length读取文件长度(以字节为单位)
long time = file.lastModified(); //获取文件最后被修改的时间
boolean cr = file.canRead(); //判断文件是否为可读的
boolean cw = file.canWrite(); //判断文件是否为可被写入的
boolean dir = file.isDirectory(); //判断文件是否为一个目录
boolean hid = file.isHidden(); //判断文件是否被隐藏
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");//获取文件最后被修改的时间
System.out.println("文件名称:"+name);
System.out.println("文件的父路径是:"+address);
System.out.println("文件的绝对路径是:"+abd_address);
System.out.println("文件长度是:"+length);
System.out.println("文件最后被修改的时间是:"+sdf.format(file.lastModified()));
System.out.println("文件是可读的吗?"+cr);
System.out.println("文件是可被写入的吗?"+cw);
System.out.println("文件是否为一个目录?"+dir);
System.out.println("文件是否为隐藏文件?"+hid);
}else{
System.out.println("查找的文件不存在!");
}
//文件输入、输出流类
try{
FileOutputStream out = new FileOutputStream(file); //创建FileOutputStream类的对象,目的是给文件中写入内容
byte buy[] = "我有一头小毛驴~我从来也不骑~有一天我心血来潮骑它去赶集~".getBytes(); //创建byte型数组,getByte()方法的作用是将一个string类型的字符串转换成byte类型并且存入一个byte数组中
out.write(buy); //将创建的字节型数组写入文件file中
out.close(); //关闭流
}catch(Exception e){
e.printStackTrace(); //输出异常信息
}
try{
FileInputStream in = new FileInputStream(file); //创建FileInputStream类的对象,目的是读取指定文件中的内容
byte byt[] = new byte[1024]; //创建byt数组用于存放从文件中读取的信息
int len = in.read(byt); //从文件中读取信息
System.out.println("文件中的信息是:"+new String(byt,0,len)); //将byte类型数组中读取的文件内容转换为字符串类型输
出
in.close(); //关闭流
}catch(Exception e){
e.printStackTrace();
}
/** 利用FileReader和FileWriter类读写文件 */
File file1 = new File("file.txt"); //实例化File类为file1对象,创建一个file.txt文件
//创建文件file.txt
try{
file1.createNewFile();
}catch(Exception e){
e.printStackTrace();
}
try{
FileWriter out = new FileWriter(file1); //创建FileWriter对象
String s = "这是用FileReader和FileWriter类读写的文件!"; //获取需要写入的内容
out.write(s); //将信息写入文件
out.close(); //关闭流
}catch(Exception e){
e.printStackTrace();
}
try{
FileReader in = new FileReader(file1);
char byt[] = new char[1024];
int len = in.read(byt);
System.out.println("文件"+file1.getName()+"中的信息是:"+new String(byt));
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
程序运行结果:
文件已删除!
文件已创建!
文件存在,文件信息如下:
文件名称:word.txt
文件的父路径是:null
文件的绝对路径是:/home/xayf/java_execise/IO/word.txt
文件长度是:0
文件最后被修改的时间是:08/12/2021 10:58:06
文件是可读的吗?true
文件是可被写入的吗?true
文件是否为一个目录?false
文件是否为隐藏文件?false
文件中的信息是:我有一头小毛驴~我从来也不骑~有一天我心血来潮骑它去赶集~
文件file.txt中的信息是:这是用FileReader和FileWriter类读写的文件!