IO与文件笔记

127 阅读1分钟

一、File

1.1、

//通过路径指向了磁盘的一个资源 
File file = new File("c:\\temp\\abc");

1.2、

//创建文件或目录 
file.createNewFile();//建文件 
file.mkdir();//建目录 
file.mkdirs();//建目录(连同父目录一起创建)

1.3、

//判断文件是否存在 
if(file.exists()){} 
//判断是否是文件或目录 
file.isFile(); 
file.isDirectory;

1.4、

//删除文件 
file.delete(); 
file.deleteOnExit();

二、IO

IO是java中提供的一种用于读写文件的API。

2.1、字节流

(1)FileOutPutStream 写数据

FileOutPutStream fs = new FileOutPutStream("c:\\temp\\abc");
/*====逐个写入====*/
fs.write(97);
fs.write(98);
fs.write(99);
//最后文本输出结果是'abc'
/*====多个写入====*/
byte[] data = {65,66,67};
fs.write(data);
//最后结果是'ABC'
/*====写入中文====*/
String Str = "Hello你好";
byte[] dataStr = str.getBytes();
fs.write(dataStr)
//关闭输出流
fs.close();

(2)FileInPutStream 读数据

FileInPutStream fis = new FileInPutStream("c:\\temp\\abc");
/*====逐个读取====*/
int data = -1;//字节流读到末尾的标志值是-1
while((data=fis.read())!=-1){
    System.out.println(data);
}
/*====多个读取====*/
byte[] temp = new byte[10];
int length = -1;
while((length=fis.read(temp))!=-1){
    System.out.println(Arrays.toString(temp));
}

(3)BufferedOutPutStream 缓冲输出流

FileOutPutStream fs = new FileOutPutStream("c:\\temp\\abc");
BufferedOutPutStream bos = new BufferedOutPutStream(fs);
bos.write(97);
Thread.sleep(10000);
bos.flush();//刷新缓冲
bos.close;

(4)ObjectOutPutStream 序列化(把对象写入IO)

//先把一个Obj对象实现Serializable接口
Obj o = new Obj();
o.setXX("");
ObjectOutPutStream oos = new ObjectOutPutStream(new FileOutPutStream("c:\\temp\\abc"));
oos.writeObject(o);
oos.close();

(5)ObjectInPutStream 反序列化(从IO中读取对象)

ObjectInPutStream ois = new ObjectInPutStream(new FileInPutStream("c:\\temp\\abc")); 
Obj o = (Obj)ois.readObject(); 
ois.close;

2.2、字符流

(1)BufferedWriter 写数据

BufferedWrite bw = new BufferedWrite(new FileWrite("c:\\temp\\abc")); 
bw.write("写入数据"); 
bw.newLine();//换行 
bw.close();

(2)BufferedReader 读数据

BufferedReader br = new BufferedReader(new FileReader("c:\\temp\\abc"));
//读取一行
String line_1 = br.readLine;
//读取多行
while((line_1 = br.readLine())!=null){
    System.out.println(line_1);
}
br.close();