输入输出流
来源:互联网 发布:网络配置切换器 编辑:程序博客网 时间:2024/05/16 09:27
File类(java.io.File)的主要方法:
(1)File(String pathname):将给定路径名字符串转换为抽象路径名来创建新的File实例
(2)boolean exists():判断File对象对应的文件或目录是否存在
(3)File getAbsoluteFile():获取File对象对应的绝对路径名形式
(4)String getAbsolutePath():获取File对象对应的绝对路径名字符串
(5)String getName():获取File对象表示的文件或目录的名称
(6)boolean isAbsolute():判断File对象对应的抽象路径名是否为绝对路径名
(7)boolean isDirectory():判断File对象代表的是否是一个目录
(8)boolean isFile():判断File对象代表的文件是否是一个标准文件
(9)boolean isHidden():判断File对象代表的文件是否是一个隐藏文件
(10)long lastModified(): 获取File对象代表的文件最后一次被修改的时间
(11)long length():获取File对象代表的文件的长度
(12)String[] list():获取File对象对应的目录中的文件和目录列表
流(Stream)的分类:
数据流的流动方向:输入流和输出流
流动的内容:字节流(8位)和字符流(16位)
InputStream:字节输入流,是所以字节输入流的父类
OutputStream:字节输出流,是所以字节输出流的父类
Reader流:处理字符输入流列的父类,是一个抽象类,不能实例化它的对象
Writer类:处理字符输出流的父类
InputStream类的常用方法:
FileInputStream(String name):通过打开一个到实际文件的连接来创建实例对象
int available():返回此输入流的数据读取方法可以读取的有效字节数
void close():关闭此输入流并释放与该流关联的所以系统资源
abstract int read():从输入流中读取下一个数据字节
int read(byte[] b):从输入流中读取一定数量的字节,并存储在数组b中
int read(byte[] b,int off,int len):将输入流中最多len个数据字节读入byte数组
long skip(long n):跳过和丢弃此输入流中n个字节的数据
OutputStream类的常用方法:
FileOutputStream(String name):创建一个向指定文件写入数据的输出文件流
void close():关闭当前输出流并释放与此流相关的所以系统资源
void flush():刷新当前输出流并强制将缓冲区的字节写入文件
void write(byte[] b):将b数组中的字节写入当前输出流
void write(byte[] b,int off,int len):将数组中下标从off开始的len个字节写入输出流
abstract void write(int b):将指定的字节写入此输出流
Reader类的常用方法:
read():从流中读入一个字符
read(char[]):从流中将一些字符读入数组
ready():判断是否准备好读取此流
reset():重置该流
skip(long n):跳过参数n指定的字符数量
Writer类的常用方法:
abstract void close():先刷新流,然后关闭该流
void write(char[] cbuf):将字符数组的内容写入流
void write(int c):向流中写入单个字符
void write(String str):向流中写入字符串
void write(String str,int off,int len):将字符串的某一部分写入流
FileInputStream流:该类是InputStream类的子类
public class Test {
public static void main(String[] args) {
int rs;
byte[] b = new byte[10];//创建一个字节数组,用于临时存放从文件中读取的内容
try{
File f = new File("D:\\in.txt");
FileInputStream fis = new FileInputStream(f);//根据D盘的文件"in.txt"创建的File对象,创建FileInputStream类的实例对象fis,此时打开磁盘文件"in.txt"并建立与该文件的连接,通过该文件就可以读取内容了
rs = fis.read(b,0,10);//调用实例对象的read方法,从文件中读取最多10个字节的数据,并放入数组b中,如果已经读到文件的尾部,该方法会返回一个负数,否则返回读取的字节数
while(rs > 0){
String s = new String(b,0,rs);//将字节数组的内容转换为字符串对象输出,然后继续读取文件的内容
System.out.print(s);
rs = fis.read(b,0,10);
}
fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
在使用FileInputStream类进行文件读取时,要注意一下几点:
(1)待读取的文件一定要存在,否则会出现异常:java.io.FileNotFoundException: D:\in.txt (系统找不到指定的文件。)
(2)文件的路径乐意采用绝对路径和相对路径两种,例子中采用的是绝对路径,编程时,可以把待读取的文件放在程序文件所在的项目下,通过
FileInputStream fis = new FileInputStream("in.txt");创建FileInputStream实例对象,有利于提高程序的可移植性
(3)FileInputStream类既可以用来读取文本文件,也可以读取二进制文件,比如:图片、声音等。
(4)在不需要使用时,要及时关闭流对象,释放与它关联的所以系统资源
FileOutputStream流:该类是OutputStream类的子类
public static void main(String[] args) {
int rs;
byte[] b = new byte[10];
try {
FileInputStream fis = new FileInputStream("notepad.exe");
FileOutputStream fos = new FileOutputStream("note.exe");
System.out.println("开始拷贝文件,请稍后...");
rs = fis.read(b,0,10);
while(rs > 0){
fos.write(b,0,10);
rs = fis.read(b,0,10);
}
System.out.println("文件拷贝结束,谢谢!");
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
程序分析:首先根据提供的两个文件创建字节输入流对象fis和和字节输出流对象fos,建立与磁盘文件的连接;如果文件"notepad.exe"不存在,会引发异常;不管"note.exe"文件是否存在,fos的创建都不会受影响。
FileOutputStream类执行写操作时,只能从文件的开始部分写入,不能实现追加写入的功能。
FileReader流:该类是Reader类的子类,实现了从文件中读取字符数据,是文件字符输入流。所创建的文件必须存在,不然异常。
public static void main(String[] args)
{
try
{
File f = new File("java.txt");
FileReader fr = new FileReader(f);
int len = fr.read();
while(len >= 0)
{
System.out.print((char)len);
len = fr.read();
}
fr.close();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
FileWriter流:该类是Writer类的子类,实现了将字符数据写入文件的功能,是文件字符输出流。如果写入的文件不存在,则会新建该文件,否则会删除旧文件,建立新的文件。
public static void main(String[] args)
{
Random rand = new Random();
try
{
FileWriter fw = new FileWriter("rand.txt");
int rs;
for(int i = 0; i < 5; i++){
rs = rand.nextInt(2000);
fw.write(String.valueOf(rs) + " ");
}
fw.write("JavaEE教程");
fw.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- 输入输出流
- Nexus私服安装
- Android编码规范
- 【转】GO 环境配置
- #枚举和排序 A - Flipping Game
- H5页面设计
- 输入输出流
- Android 之 高德地图学习 三 覆盖物
- Scala主构造器、私有构造器、构造器重载实战详解
- 视音频数据处理入门:RGB、YUV像素数据处理
- 4.Which two statements are true regarding single row functions? (Choose two.)
- 数列特征
- python修饰符——带参数
- H5页面设计
- HotSpot是什么?