1.文件操作的基本流程:
1、 通过File类找到一个文件
2、 通过File类去实例化字节流、字符流操作类
3、 进行读或写的操作,在写的时候如果文件不存在则会自动创建
4、 关闭流并释放资源
2.字节流
在字节流中分为两种:
输出流:OutputStream
输入流:InputStream
2.1 输出流
定义:abstract class OutputStream extends Object implements Closeable, Flushable
|-OutputStream子类:FileOutputStream
|-构造方法:public FileOutputStream(File file)
输出方法: void write(byte[] b) 将 b.length 个字节从指定的字节数组写入此输出流
需要将一个字符串变为一个byte数组,通过方法:public byte[] getBytes() 将String转化成byte[]。
关闭流:void close() 关闭此输出流并释放与此流有关的所有系统资源。
例1.程序如下:(
代码没有优化,只为实现效果)
// 1.通过File找到一个文件
File file = new File("e:\\hello.txt");
try {
// 2.通过子类实例化
OutputStream out = new FileOutputStream(file);
String str = "Hello World!!!!";
byte b[] = str.getBytes();
// 3.写操作
out.write(b);
// 4.关闭流
//out.close();
} catch (Exception e) {}
2.2 输入流
使用InputStream读取内容。
InputStream也是一个抽象类,所以必须使用其子类:FileInputStream
读的方式:
int read(byte[] b) 从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中。
|- 传入一个byte数组,将所有的内容保存在byte数组之中。
|- 此方法返回向数组中写入数据的个数
将byte数组变为字符串:public String(byte b[])、public String(byte b[],int be,int len)
例2.
File file = new File("e:\\hello.txt") ;
try {
// 通过子类实例化
InputStream input = new FileInputStream(file);
byte b[] = null;
int len = 0;
b = new byte[1024];//
// 把所有的内容读到数组b中
// 返回读取的个数
len = input.read(b);
input.close();
System.out.println(new String(b, 0, len));
} catch (Exception e) {}
在读取文件的时候,我们需要设置byte[]的长度,如果大了,那么空间就会浪费,至于如何根据文件大小设置
长度,将b = new byte[1024];替换成 b = new byte[(int)file.length()] ;就行了。
3.字符流
一个字符 = 两个字节。
在字符流操作中,主要使用以下两个类:
字符输出流:Writer
字符输入流:Reader
3.1 字符输出流
写字符串: void write(String str) 写入字符串。
例3.
try {
// 通过子类实例化
Writer out = new FileWriter(new File("e:\\hello.txt"));
String str = "Hello World!!!!!";
out.write(str);
out.close();
} catch (Exception e) {}
3.2 字符输入流
读的方法:
|- int read(char[] cbuf) 将字符读入数组。
|- int read() 读取单个字符。
例4.
try {
// 通过子类实例化
Reader input = new FileReader(file);
char c[] = null;
int len = 0;
c = new char[(int) file.length()];
len = input.read(c);
System.out.println(new String(c, 0, len));
input.close();
} catch (Exception e) {}
4. 字节流和字符流的区别
所有的文件不管是使用Output、Writer实际上最终保存在文件上的都是字节。字符是在内存中形成的。
例如将例1中的out.close();注释掉,表示不关闭输出流。
// 1.通过File找到一个文件
File file = new File("e:\\hello.txt") ;
// 2. 输出流操作类
OutputStream out = null;
try {
// 2.通过子类实例化
out = new FileOutputStream(file);
String str = "Hello World!!!";
byte b[] = str.getBytes();
// 3.写操作
out.write(b);
// 4.关闭流
//out.close();
}catch (Exception e) {}
我们观察到字符串依然写到文件里,证明字节流是直接操作文件本身的。再看字符流的输出,我们将程序例3
的关闭流语句注释了,运行之后,发现文件虽然创建,但是内容并没有写进去,这是因为对于字符流在关闭操
作的时候,会强制性的将缓存清空,那么以上代码并没有关闭,所以现在的内容还在缓存里,并没有直接到文
件之中。想如何在不关闭流的情况下写文件呢?
在Writer类中提供了一个强制性清空缓存的操作: abstract void flush() 刷新此流。
将out.close();替换为 out.flush() ;
分享到:
相关推荐
java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...
Java文件操作封装类
java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。
java视频教程 Java文件操作 JavaFile
如何在Java中操作文件呢?转载供大家欣赏
本项目"java文件操作(增删改查)"是基于控制台实现的一个无界面程序,利用Eclipse集成开发环境编写,实现了基本的文件管理功能。下面我们将深入探讨这些知识点。 首先,我们要了解Java中的`java.io`包,它是处理输入...
Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...
java文件操作大全.chm
java 文件操作 压缩文件 解压文件 复制文件 复制文件夹
java 文件操作工具类
java 文件操作 包括 文件删除 导出jsp Word 格式文件 ,文件合并修改等。
《Java文件操作大全》电子书 本文汇集常用文件操作方法,包括文件的建立/检查与删除,目录的建立/检查与删除,取出目录中文件,文件属性的取得,逐行读取数据等等。
最全的java文件操作大全,包括文件的存储,建立,判断文件是否存在,建立文件删除文件,附加源码!!!
Java文件操作中的一些常用方法的总结,可以参考参考啦!
里面包含了File类的作用、IO流、字节流字符流、异常处理、缓冲流、转换流、序列化、打印流的详细讲解
Java文件操作大全[汇编].pdf
pan.razerpen.file中提供一个多对象单文件存储类FileMap和一个单对象单文件存储类FilePage。 提供方便快捷的基本类型和对象的文件存取方式。详细用法见sample.razerpen.file