File类
File类是Java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建,删除,重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录,文件的长度,文件读写权限等。数据流可以将数据写入到文件中,文件也是数据流最常用的数据媒体。
Demo
import java.io.File;
/*判断D盘的java资料文件夹中是否存在test.txt这个文件
* 如果存在则删除
* 如果不存在则创建
*/
public class FileDemo {
public static void main(String[] args)
{
File file=new File("D:\\java资料\\test.txt"); //括号里面写文件路径
if(file.exists())
{
file.delete();
System.out.println("文件已删除");
}
else
{
try //用try catch语句块捕捉异常
{
file.createNewFile();
System.out.println("文件创建成功");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
获取文件信息
File类的常用方法:直接在代码中展示
import java.io.File;
/*判断D盘的java资料文件夹中是否存在test.txt这个文件
* 如果存在则删除
* 如果不存在则创建
* File类的一些常用方法
*/
public class FileDemo {
public static void main(String[] args)
{
File file=new File("D:\\java资料\\test.txt"); //括号里面写文件路径
if(file.exists())
{
String name=file.getName(); //获取文件名
long length=file.length(); //获取文件长度
boolean hidden=file.isHidden(); //判断文件是否是隐藏文件
String AbsolutePath=file.getAbsolutePath(); //获取文件的绝对路径
boolean isFile=file.isFile(); //判断是否是文件类型
boolean isDirectory=file.isDirectory(); //判断是否是目录
System.out.println("文件名:"+name);
System.out.println("文件长度:"+length);
System.out.println("是否是隐藏文件:"+hidden);
System.out.println("文件的绝对路径是:"+AbsolutePath);
System.out.println("是否是文件:"+isFile);
System.out.println("是否是目录:"+isDirectory);
}
else
{
try //用try catch语句块捕捉异常
{
file.createNewFile();
System.out.println("文件创建成功");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
调试结果:
字节流
(1)文件输入输出流
FileInputStream和FileOutputStream
(2)带缓存的输入输出流
BufferedInputStream和BufferedOutputStream
(3)数据输入输出流
DataInputStream和DataOutputStream
在计算机中文件是byte 、byte、byte地存储
FileInputStream在读取文件的时候,就是一个一个byte地读取(类似一滴滴水,滴进水缸)
DataInputStream则是在FileInputStream的一个轻量级的包装类(类似一瓢一瓢水,加进水缸)
BufferInputStream则是自带缓冲区,默认缓冲区大小为8X1024 (类似一桶一桶水,倒入水缸),缓存是IO的一种性能优化,有了缓存区,使得流在执行skip(),mark(),reset()方法都成为可能。
FileInputStream和FileOutputStream的Demo
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException
{
File file=new File("D:\\java资料\\Text.txt");
FileOutputStream out=new FileOutputStream(file);
byte buy[]="我有一只小毛驴,我从来也不骑。".getBytes();
out.write(buy); //数组中的信息写入到文件中
out.close(); //将流关闭
FileInputStream in=new FileInputStream(file);
byte byt[]=new byte[1024]; //创建一个byte数组
int len=in.read(byt); //文件中读取信息
System.out.println("文件中的信息是:"+new String(byt,0,len));
in.close(); //关闭流
}
}
BufferedInputStream和BufferedOutputStream的Demo
/*
*用BufferedInputStream读取Text.txt中的内容
*用BufferedOutputStream将读取的内容写入到WriteText.txt中
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamDemo{
public static void main(String[] args) throws Exception
{
BufferedInputStream bis=null;
BufferedOutputStream bot=null;
byte[] buffer=new byte[1024]; //声明一个byte数组存储文本内容
try{
bis=new BufferedInputStream(new FileInputStream("D:\\java资料\\Text.txt"));
bot=new BufferedOutputStream(new FileOutputStream("D:\\java资料\\WriteText.txt"));
int bytesRead=0;
//从文件中按字节读取内容,到文件尾部时read方法将返回-1
while((bytesRead=bis.read(buffer))!=-1)
{
String s=new String(buffer,0,bytesRead); //将buffer转换成字符串打印到控制台
System.out.println(s);
bot.write(buffer); //将byte数组存储的文本内容写入到新建的WriteText.txt中
}
}catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
}finally{
//关流
try
{
if(bis!=null)
{
bis.close();
}
bot.flush();
bot.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
}
编译结果:
DataInputStream和DataOutputStream的Demo
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class DataInputStreamDemo{
public static void main(String[] args)
{
try {
FileOutputStream fos=new FileOutputStream("D:\\java资料\\FlieInput.txt");
DataOutputStream dos=new DataOutputStream(fos);
//写入磁盘文件数据,将字符串按照UTF编码后的字节长度写入目标设备,然后才是每一个字节的UTF编码
dos.writeUTF("使用writeUTF()方法写入数据;");
//将字符串中的每一个字符中的俩个字节的内容写到目标设备中
dos.writeChars("使用writeChars()方法写入数据;");
//将字符串中的每一个字符的低字节内容写入到目标设备中
dos.writeBytes("使用writeBytes()方法写入数据;");
dos.close();
FileInputStream fis=new FileInputStream("D:\\java资料\\FlieInput.txt");
DataInputStream dis=new DataInputStream(fis);
System.out.println(dis.readUTF()); //将文件数据输出
dis.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
编译结果: