File、InputStream、OutputStream、Reader、Writer、Serialzable接口
File类应用的小例子
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) {
//指定文件路径和名称
String path = "D:"+File.separator+"1.txt";
//实例化文件类
File file = new File(path);
//判断是否为路径
System.out.println("是否为路径:"+file.isDirectory());
//判断文件是否存在
if(file.exists()){
System.out.println("文件存在!");
file.delete();//删除文件
}else{
System.out.println("文件不存在,但是已经创建。。。");
try {
file.createNewFile();//创建文件,可能抛出异常
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
列出一个指定目录下的所有文件夹,及文件夹内部的文件夹
import java.io.File;
public class FileDemo2 {
private static File f;
private static File[] fs;
public static void main(String[] args) {
String path = "D:"+File.separator+"Android.7z";//指定目录
fun(path);//列出该目录下的所有子目录,及子目录内容
}
public static void fun(String s){
f = new File(s);//实例化File类
if(f.isDirectory()){//判断是否为路径
fs = f.listFiles();//列出
for(File t:fs){
System.out.println(t);
if(t.isDirectory()){
fun(t.toString());
}
}
}else{
System.out.println(f);
}
}
}
File类只能对一个文件本身进行操作,若想对文件内容进行操作,需要RandomAccessFile类
使用RandomAccessFile类进行文件读写操作
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Demo2 {
public static void main(String[] args) throws IOException {
write("这里演示文件的读写操作","d:"+File.separator+"1.txt");
System.out.println(read("d:"+File.separator+"1.txt"));
}
//内容写入文件,会从头开始覆盖原始内容
public static void write(String s,String path) throws IOException{
File file = new File(path);
//实例化RandomAccessFile实例,指定操作模式为“读写”模式,该模式下,若文件不存在,则自动创建
RandomAccessFile rfile = new RandomAccessFile(file, "rw");
rfile.write(s.getBytes());//以字节形式写入
rfile.close();
}
//读出文件内容
public static String read(String path) throws IOException{
File file = new File(path);
//实例化RandomAccessFile实例,指定操作模式为“读写”模式,该模式下,若文件不存在,则自动创建
RandomAccessFile rfile = new RandomAccessFile(file, "r");
int len = (int)file.length();//得到文件的大小,以字节形式
byte[] ss = new byte[len];//根据文件大小声明字节数组大小
for(int i=0;i<len;i++){//循环读取每一个字节
ss[i]=rfile.readByte();
}
rfile.close();
//调用String类的构造,生成新字符串
return new String(ss);
}
}
1、字节流
OutputStream类用于字节的输出
InputStream类用于字节的读入
2、字符流
Writer类用于字符的输出
Reader类用于字符的读入
这里的输出,读入是相对于我们大家写的程序而言,在程序中将数据写到程序外,叫输出;相反,从程序外得到数据供程序使用,叫读入;
在演示之前呢,先规范下Java中IO操作的基本步骤:
1、使用File类找到一个文件
2、使用字节流或字符流的子类为OutputStream、InputStream、Writer、Reader进行实例化
3、进行读写操作
4、关闭流
输出数据实例
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
//文件路径,要确保改路径存在
String path = "E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt";
//使用File类找到文件
File file = new File(path);
//实例化OutputStream类
OutputStream out = new FileOutputStream(file,true);//加入参数true表示可以在文件内容后追加内容
//进行输出操作,向文件中写入数据时,\r\n表示换行
out.write(("\r\n"+"这是FileOutputStream演示实例").getBytes());
//关闭流
out.close();
}
}
读入数据实例
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//文件路径
String path = "E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt";
//实例化文件
File file = new File(path);
//实例化InputStream
InputStream in = new FileInputStream(file);
//读入数据
int len = (int)file.length();//文件所占字节数
byte[] bytes = new byte[len];//存储空间
in.read(bytes);//得到数据
System.out.println(new String(bytes));//输出
//关闭流
in.close();
}
}
输出数据实例
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FileWriterDemo {
public static void main(String[] args) throws IOException {
//文件路径
String path = "E:"+File.separator+"javaio"+File.separator+"FileWriter.txt";
//实例化文件
File file = new File(path);
//实例化Writer类对象
Writer writer = new FileWriter(file,true);
//输出数据
writer.write("这是FileWriter演示实例 "+"\r\n");
//关闭流
writer.close();
}
}
读入数据实例
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
// 文件路径
String path = "E:" + File.separator + "javaio" + File.separator+ "FileWriter.txt";
// 实例化文件
File file = new File(path);
//实例化Reader实例
Reader r = new FileReader(file);
//读入数据
int len = (int)file.length();//文件大小
char[] cbuf = new char[len];//存储空间
len = r.read(cbuf);//读入数据,返回数据长度
System.out.println(len);
System.out.println(new String(cbuf,0,len));
//关闭流
r.close();
}
}
说明下OutputStream和Writer的区别:
OutputStream在操作文件时,直接将字节内容写入文件,而Writer会先把字符写入缓存区,然后写入文件,若将上面Writer的例子中的“流关闭”动作去掉,可以发现,文件中根本不会有内容出现。实际上,计算机内部的数据存储形式都是字节形式的,所以个人感觉字节流可以搞定一切数据形式。
好了,今天到这里吧。。。
原文地址:http://blog.csdn.net/u012437355/article/details/46129477