java File类与文件输入/输出流


File类

File类是java.io包中唯一代表磁盘文件本身的类,该类主要用于文件和目录的创建、文件的查找和文件的删除等。

文件的创建与删除

1.File(String pathname) 该构造方法通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

语法如下:

new File(String pathname)
//pathname代表路径名
//例:
File file = new File("E:\file.txt");

2.File(String parent, String child)该方法根据 parent 路径名字符串和 child 路径名字符串(包含文件名)创建一个新 File 实例。

语法如下:

new File(String parent, String child)
//parent:父路径字符串,如:E:/
//child:子路径字符串,如:file.txt

3.File(File f, String child);该构造方法通过给定的f抽象路径名和子路径名字符串创建一个新的File实例。

语法如下:

new File(File f, String child)
//f:父路径字符串,如:E:/
//child:子路径字符串,如:file.txt

创建File对象:

File file = new File("Hello.txt")

例:

import java.io.File;
public class Filetxt{
public static void main(String[] args) {
File file = new File("D:\\Hello.txt");
if(file.exists()) //如果文件存在
{
file.delete(); //删除文件
System.out.println("文件已删除");
}
else {
try {
file.createNewFile(); //创建该文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

如果D盘目录下有Hello.txt文件,输出:文件已删除,反之输出:文件已创建

获取文件信息

创建File对象成功后,常用方法如下:

方法 描述
public String getName() 返回由此抽象路径名表示的文件或目录的名称。
public String getParent() 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。
public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null。
public String getPath() 将此抽象路径名转换为一个路径名字符串。
public boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
public String getAbsolutePath() 返回抽象路径名的绝对路径名字符串。
public boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。
public boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。
public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
public long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
public long length() 返回由此抽象路径名表示的文件的长度。
public boolean createNewFile() throws IOException 当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。
public boolean delete() 删除此抽象路径名表示的文件或目录。
public void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
public String[] list() 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
public String[] list(FilenameFilter filter) 返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
public File[] listFiles(FileFilter filter) 返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
public boolean mkdir() 创建此抽象路径名指定的目录。
public boolean mkdirs() 创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
public boolean setLastModified(long time) 设置由此抽象路径名所指定的文件或目录的最后一次修改时间。
public boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。
public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
public static File createTempFile(String prefix, String suffix) throws IOException 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
public int compareTo(File pathname) 按字母顺序比较两个抽象路径名。
public int compareTo(Object o) 按字母顺序比较抽象路径名与给定对象。
public boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。
public String toString() 返回此抽象路径名的路径名字符串。

例:

import java.io.File;
public class Filetests{
public static void main(String[] args) {
File file = new File("E:\\Hello.txt");
if(file.exists()) { //如果文件存在
String name = file.getName();
long len = file.length();
boolean hid = file.isHidden();
boolean abso = file.isAbsolute();
System.out.println("名称:"+name);
System.out.println("长度:"+len);
System.out.println("是否是隐藏文件:"+ hid);
System.out.println("是否为绝对路径名:"+abso);
}
}
}

运行结果如下:

名称:Hello.txt
长度:0
是否是隐藏文件:false
是否为绝对路径名:true

文件输入/输出流


FileInputStream与FileOutputStream

InputStream(输入流):输入流是用来读入数据的.

OutputStream(输出流):输出流是用来写出数据的。

FileInputStream

构造方法:

public FileInputStream(String name);
public FileInputStream(File file);

常用方法:

方法 描述
public int read(); 从此输入流中读取一个数据字节
public int read(byte[] b); 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中
public int read(byte[] b,int off,int len); 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。
例:
import java.io.FileInputStream;
public class FileIn {
public static void main(String[] args){
String out=null;
try {
int size=0;
byte[] buffer=new byte[1024];
FileInputStream fis=new FileInputStream("FileIn.txt");
while((size=fis.read(buffer))!=-1){
out=new String(buffer, 0, size);
System.out.println(out);
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

FileOutputStream

构造方法:

方法 描述
public FileOutputStream(File file); 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
public FileOutputStream(File file,boolean append); 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(String name); 创建一个向具有指定名称的文件中写入数据的输出文件流。
public FileOutputStream(String name,boolean append); 创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

常用的方法:

方法 描述
public void write(int b); 向文件中写入一个字节大小的数据
public void write(byte[] b); 将 b.length 个字节从指定 byte 数组写入此文件输出流中。
public void write(byte[] b,int off,int len); 指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

例:

import java.io.FileOutputStream;
public class Filed {
public static void main(String[] args){
try { String font="输出流是用来写入数据的!";
FileOutputStream fos = new FileOutputStream("Filed.txt");
fos.write(font.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

FileReader和FileWriter


FileReader

FileReader类继承自InputStreamReader类,它自己只提供了几个构造方法,它的构造方法中又通过super来调用父类构造器以构建流对象,它本身没有再提供其他的读取流数据的方法,全部继承它的直接父类InputStreamReader,而InputStreamReader又是继承自Reader类,因此FileReader和InputStreamReader一样,都能使用read()、read(char cbuf[])、read(char cbuf[], int off, int len)方法来读取流数据。

构造方法:

方法 描述
public FileReader(String name) 给定要读取文件名创建一个FileReader对象
public FileReader(File file) 使用File对象创建一个新的FileReader,给定要读取的File对象

FileReader方法:

方法 描述
public int read() throws IOExecption 读取单个字符 ,返回一个int型变量代表读取到的字符
public int read(char [] c, int offset, int len) 读取字符到c数组,返回读取到字符的个数

例:

import java.io.*;
public class P13 {
public static void main(String[] args) throws Exception {
FileReader fr=new FileReader("text/test14");
int num;
while((num=fr.read())!=-1){
System.out.println("读取到的内容是:"+(char)num);
}
//关闭流
fr.close();
}
}

FileWriter

构造方法:

方法 描述
FileWriter(File file) 在给出 File 对象的情况下构造一个 FileWriter 对象
FileWriter(File file, boolean append)

append:如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则写入文件开始处。

FileWriter方法:

方法 描述
public void write(int c) throws IOException 写入单个字符c
public void write(char [] c, int offset, int len) 写入字符数组中开始为offset长度为len的某一部分
public void write(String s, int offset, int len) 写入字符串中开始为offset长度为len的某一部分

例:

import java.io.*;
public class FileReader {
public static void main(String args[]) throws IOException {
File file = new File("Hello1.txt");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write("read");
writer.flush();
writer.close();
FileReader fr = new FileReader(file);
char[] a = new char[100];
for (char c : a)
System.out.print(c);
fr.close();
}
}

运行结果如下:

read

java File类与文件输入/输出流:FileInputStream与FileOutputStream的更多相关文章

  1. Java File类与文件IO流总结

    1.File类 File类被定义为“文件和目录路径名的抽象表示形式”,这是因为File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述.通过构造函数创建一个File类对象,则该对象就 ...

  2. Java 之 File类(文件操作)

    一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...

  3. 九:File类,文件的操作

    File的常用方法:

  4. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  5. Java File类基本操作

    我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...

  6. Java File 类的使用方法详解

    Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...

  7. Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  8. Java——File类概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  9. 使用File类操作文件或目录的属性

    在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...

  10. Java File类 mkdir 不能创建多层目录

    File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...

随机推荐

  1. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...

  2. Golang实现set

    背景 Golang语言本身未实现set,但是实现了map golang的map是一种无序的键值对的集合,其中键是唯一的 而set是键的不重复的集合,因此可以用map来实现set Empty 由于map ...

  3. 不建议升级windows11的理由

    此文写于2022年9月13日,用于警告那些蠢蠢欲动想升级win11的伙伴. win11发布后,最亮眼的功能当然是自带"安卓模拟器",但作为一名程序开发者的我其实是不愿意马上尝鲜的, ...

  4. 在没有安装终端服务的Windows 2012 R2服务器上配置远程桌面的属性

     在没有安装终端服务的Windows2012 R2服务器上配置远程桌面的属性. 从Windows 2012开始,如果没有在服务器上启用终端服务的计算机,要想配置远程桌面使用更安全加密的RDP连接就 ...

  5. 类似微信聊天小程序-网易云信,IM DEMO小程序版本

    类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...

  6. ProxySQL(3):Admin管理接口

    文章转载自:https://www.cnblogs.com/f-ck-need-u/p/9281199.html ProxySQL的Admin管理接口 当ProxySQL启动后,将监听两个端口: (1 ...

  7. 阿里云SLB的http强制转https

    公司的要求:要求强制http转https 我的环境是: 域名<--->slb的ip<-->源服务器nginx 具体做法是: 第一步:证书放到slb的https上,通过443端口 ...

  8. LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载

    假设新硬盘是 /dev/sdc fdisk操作的是/dev/sdc ,分区后才会有/dev/sdc1 /dev/sdc2 之类 一般mkfs.ext4 /dev/sdc1 来格式化一个分区,再moun ...

  9. Linux 上安装 PostgreSQL

    打开 PostgreSQL 官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux.Windows.Ma ...

  10. ERP 系统最重要的是什么?

    ERP系统最重要的就是内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统可以算是当今最复杂的应用系统,也是最昂贵的,头部厂商一套系统动辄上千万,实施费用也常常达到千万级,实施周期动辄半年一年的, ...