java File类与文件输入/输出流:FileInputStream与FileOutputStream
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的更多相关文章
- Java File类与文件IO流总结
1.File类 File类被定义为“文件和目录路径名的抽象表示形式”,这是因为File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述.通过构造函数创建一个File类对象,则该对象就 ...
- Java 之 File类(文件操作)
一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...
- 九:File类,文件的操作
File的常用方法:
- Java File类总结和FileUtils类
Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...
- Java File类基本操作
我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...
- Java File 类的使用方法详解
Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...
- Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
- Java——File类概述
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- 使用File类操作文件或目录的属性
在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...
- Java File类 mkdir 不能创建多层目录
File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...
随机推荐
- MAC MySQL安装配置
1. 下载 下载地址:https://dev.mysql.com/downloads/mysql/ 注意选择对应的版本,M系列芯片对应ARM 2. 安装 参考官网教程, 点击地址查看, 一直点击继续即 ...
- day03-2无异常退出
多用户即时通讯系统03 4.编码实现02 4.3功能实现-无异常退出系统 4.3.1思路分析 上述代码运行时,在客户端选择退出系统的时候,可以发现程序并没有停止运行,原因是: 退出时,程序将循环标志l ...
- 配置 Containerd 在 harbor 私有仓库拉取镜像
官方文档地址:https://github.com/containerd/cri/blob/master/docs/registry.md 严格来说,这个具体可分为两部分 1.在k8s中使用Conta ...
- 开源 Web 相册程序: Photoview 和数据可视化生成工具:Datawrapper
Photoview Photoview是一个开源 Web 相册程序,Go 语言写的,使用 Docker 安装,可以用来快速架设个人相册. github地址:https://github.com/pho ...
- 查询nginx访问日志中访问次数最多的前10个IP地址
cat log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | awk '{print $0}' | head -n 10
- .NET6 使用 AutoMapper (解析)
一.Net 6环境下的.net core项目里如何使用AutoMapper实现依赖注入. 注: AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象. 第一步,在Nuget引入 ...
- Codeforces Round #442 (Div. 2) B. Nikita and string
题意:求最长可以分a b a为三部分子串,a b a可以为空 思路在代码里 1 #include<cstdio> 2 #include<iostream> 3 #include ...
- 【机器学习】利用 Python 进行数据分析的环境配置 Windows(Jupyter,Matplotlib,Pandas)
环境配置 安装 python 博主使用的版本是 3.10.6 在 Windows 系统上使用 Virtualenv 搭建虚拟环境 安装 Virtualenv 打开 cmd 输入并执行 pip inst ...
- .Net CLR异常简析
楔子 前面一篇研究了下C++异常的,这篇来看下,CLR的异常内存模型,实际上都是一个模型,承继自windows异常处理机制.不同的是,有VC编译器(vcruntime.dll)接管的部分,被CLR里面 ...
- 关于IOC容器
1.什么是 IOC (1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理 (2)使用 IOC 目的:为了耦合度降低