目录
什么是文件?
相关记录或放在一起的数据的集合
Java程序如何访问文件属性?
JAVA API :java.io.File 类
File类的常用方法
方法名称 | |
boolean exists() | 判断文件或目录是否存在 |
boolean isFile | 判断是否是文件 |
boolean isDirectory() | 判断是否是目录 |
String getPath | 返回此对象表示的文件的相对路径名 |
String getAbsolutePath() | 返回此对象表示的文件的绝对路径名 |
String getName() | 返回此对象表示的文件或目录的名称 |
boolean delete() | 删除此对象指定的文件或目录 |
boolean createNewFile() | 创建名称的空文件,不创建文件夹 |
long lenth() | 返回文件的长度,单位为字节,如果文件不存在,则返回OL |
练习1:查看文件属性、创建和删除文件
实现查看文件属性、创建和删除文件功能
![]()
效果图 public class FileMethods { public static void main(String[] args)throws IOException { File file = new File("E:\\mydog\\test.txt"); file.createNewFile(); System.out.println("名称" + file.getName()); System.out.println("相对路径" + file.getPath()); System.out.println("绝对路径" + file.getAbsoluteFile()); System.out.println("文件大小" + file.length()); File file1 = new File("E:\\mydog\\f.txt"); file1.createNewFile(); } }
如何读写文件?
通过流来读写文件
流是一组有序的数据序列
以先进先出方式发送信息的通道
输入/输出流与数据源
Java流的分类
FileInputStream
InputStream类常用方法
int read( )
int read(byte[] b)
int read(byte[] b,int off,int len)
void close( )
int available():可以从输入流中读取的字节数目
子类FileInputStream常用的构造方法
FileInputStream(File file)
FileInputStream(String name)
使用FileInputStream 读文本文件
演示示例2:使用FileInputStream类读取文本文件
FileOutputStream
OutputStream类常用方法
void write(int c)
void write(byte[] buf)
void write(byte[] b,int off,int len)
void close()
void flush():强制把缓冲区的数据写到输出流中
FileOutputStream
子类FileOutputStream常用的构造方法
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)
1.前两种构造方法在向文件写数据时将覆盖文件中原有的内容
2.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件
使用FileOutputStream 写文本文件
使用FileOutputStream 写文本文件的步骤与读文件的步骤有何不同?
演示示例3:使用FileOutputStream类向文本文件写数据
练习2:复制文本文件
需求说明
文件“我的青春谁做主.txt”位于D盘根目录下,要求将此文件的内容复制到C:\myFile\my Prime.txt中public class Copy { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { //创建输入流对象,读取文件内容 fis = new FileInputStream("E:\\我的青春谁做主.txt"); //创建输出流对象,向文件写内容。 fos = new FileOutputStream("D:\\及你太美.txt"); //可以从输入流中读取的字节数目 int size = fis.available(); System.out.println(size); //缓冲区或者中转站,输入流将内容读取到字节数组中,然后输出流从字节数组中拿到数据写出去 byte[] words = new byte[size]; int len = -1; System.out.println("----->开始读取源文件内容,向目标文件复制(写入)"); //fis.read(words):将文件内容读取到缓冲区(字节数组words) //len:每次读取的量,按字节读 while((len = fis.read(words)) != -1){ //将内容写入到文件中,words:写入内容,0:偏移量,len:每次写入的量(按字节写入) fos.write(words,0,len); } //强制把缓冲区的数据写到输出流中 fos.flush(); System.out.println("----->文件复制完毕"); } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); }finally { try { if(fos != null ){ fos.close(); } if(fis != null){ fis.close(); } }catch (IOException e){ e.printStackTrace(); } }