创建文件对象:可以是物理文件或目录,操作文件或目录的属性(路径、权限、日期和时间等)
通过流来读写文件,流是一组有序的数据序列,以先进先出方式发送信息的通道
很多的信息,都是通过文件来读取的,文件是数据源
对于程序来说,把文件读入到程序中,这是输入,把资料读出去是是输出。
在Java中流的分类:
按流向区分: 1、输出流---->OutputStream和Writer作为基类
2、输入流---->InputputStream和Reader作为基类 输入输出流是相对于计算机内存来说的
按照处理数据单元划分: 1、字节流---->字节输入流InputputStream 字节输出流OutputStream这两个作为基类 字节流是8位通过字节流,字符流是16位Unicode字符流
2、字符流---->字符输入流Reader 字符输出流Writer这两个作为基类
通常使用按处理数据单元划分的多一点。
字节流: InputStream
read() 从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1
read(byte[ ] a) 从输入流读取若干字节,把这些字节保存到数组a中,返回的是读取到字节数,如果到了输入流的末尾,返回-1
read(byte[ ] a,int off,int len) 从输入流读取若干字节,把这些字节保存到数组a中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数 目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1
close()
available() 可以从输入流中读取的字节数目
FileInputStream(子类FileInputStream常用的构造方法)
new FileInputStream(File file) 这是一个文件类
new FileInputStream(String path) 这是路径
OutputStream
write(int a)
write(byte [ ] a)
write(byte [ ] a,int off ,int len)
close()
flush() 强制将缓冲区清空
FileOutputStream
new FileOutputStream(File file)
new FileOutputStream(String path)
new FileOutputStream(String path,boolean append)可以指定覆盖或追加文件内容
Reader
read() 从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1
read(byte[ ] a) 从输入流读取若干字节,把这些字节保存到数组a中,返回的是读取到字节数,如果到了输入流的末尾,返回-1
read(byte[ ] a,int off,int len) 从输入流读取若干字节,把这些字节保存到数组a中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数 目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1
close()
InputStreamReader
new InputStreamReader(InputStream in)
new InputStreamReader(InputStream in, String charsetName)
FileInputStreamReader(是InputStreamReader的子类,该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型)
new FileReader(File file)
new FileReader(String name)
System.getProperty("file.encoding");获得本地平台的字符编码类型
Writer
writer(String str) 将str字符串里包含的字符输出到指定的输出流中
writer(String str,int off,int len) 将str字符串里从off位置开始,长度为len的多个字符输出到输出流中
close()
flush() 刷新输出流
使用io的步骤:
1、引入相关的类
2、构造文件输入流或输出流或字符输入流或字符输出流
3、读取或写出文本文件的数据
4、关闭流对象
案例:
import java.io.File;
import java.io.IOException;
public class TestClass {
/**
* 创建一个文件或者目录
* @param file
*/
public void creatFile(File file){
if(file.exists()){//判断文件或目录是否存在,存在为true
System.out.println("此文件已存在!");
}else{
try {
file.createNewFile();//创建文件
System.out.println("文件创建成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 获得文件的信息
* @param file
*/
public void getFileInfo(File file){
if(file.exists()){//先判断是否有此文件或者目录
if(file.isFile()){//判断是否是文件
//获得文件的绝对路径
String string=file.getPath();//相对路径
String a=file.getAbsolutePath();//绝对路径
String name=file.getName();//获得文件名
System.out.println("相对路径:\t"+string);
System.out.println("绝对路径:\t"+a);
System.out.println("文件名为:"+name);
System.out.println("文件大小为:"+file.length());
}
if(file.isDirectory()){//判断是否是目录
System.out.println("此文件是目录");
}
}else {
System.out.println("此文件不存在!");
}
}
/**
* 删除文件
* @param file
*/
public void del(File file){
if(file.exists()){//先要判断是否有此文件才可以进行删除工作
file.delete();
System.out.println("删除文件成功!");
}else{
System.out.println("此文件不存在");
}
}
}
public static void main(String[] args) {
//要去判断是否有这个文件或者目录,如果没有,那么就去创建一个文件
TestClass testClass=new TestClass();
File file=new File("E:/刘楠梅/text.txt");//这里是要创建的文件
// testClass.creatFile(file);//通过调用方法去检查是否有该文件或目录,没有就创建
// testClass.getFileInfo(file);
testClass.del(file);
}
原文地址:https://www.cnblogs.com/shmilynanmei/p/8883621.html