0
点赞
收藏
分享

微信扫一扫

8、IO相关


java.io中最重要的

1、  五个类:File、OutputStream、InputStream、Writer、Reader

2、  和一个接口:Serializable

 

 

File类

1、  操作文件与文件夹的类,

2、  RandomAccessFile,随机存取类,用来操作文件内容,如下

import java.io.File;
import java.io.RandomAccessFile;

publicclass hello{
publicstaticvoid main(String args[])throws Exception{
//创建文件夹
File dir =new File("C:"+ File.separator +"AAA");
dir.mkdir();
System.out.println("create dir AAA");
//判断是否文件夹
if(dir.isDirectory())System.out.println("AAA is a directory");

//创建文件
File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");
f1.createNewFile();
System.out.println("create file AAA.txt in AAA dir");
if(f1.isDirectory()==false)System.out.println("AAA.txt is not a directory");
File f2 =new File("C:"+ File.separator +"AAA\\BBB.txt");
f2.createNewFile();
System.out.println("create file BBB.txt in AAA dir");
if(f2.isDirectory()==false)System.out.println("BBB.txt is not a directory");

//获取文件夹下的文件列表
String[] files = dir.list();
for(int i=0; i<files.length; i++){
System.out.println("AAA dir has File : "+ files[i]);
}

System.out.println("10 seconds later delete file AAA.txt inAAA dir");
Thread.sleep(10*1000);
//删除文件
f1.delete();

//向文件中写入数据
RandomAccessFile raf =new RandomAccessFile(f2,"rw");
raf.writeBytes("hello kk");
raf.close();
}
}

 

 

字节流与字符流操作

1、  字节流,主要操作byte数组,使用InputStream、OutputStream类

2、  字符流,主要操作字符,一个字符两个字节,使用Reader、Writer类

3、  字符流的处理与字节流区别不大

a)        字符流不需要将数据转成byte类型

b)        字节流是直接操作文件内容

c)        字符流是先将数据加载到缓冲区(内存)中,再进行操作

d)        在程序中,优先使用字节流方式

字节流操作如下

import java.io.File;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.FileInputStream;

publicclass hello{
publicstaticvoid main(String args[])throws Exception{
//声明文件,如果文件不存在则自动创建
File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");
//创建文件输出流(程序向文件输出字节流)
OutputStream out =new FileOutputStream(f1);
String str ="hello baby";
byte bts[]= str.getBytes();
//向文件输出字节流,并关闭输出流
out.write(bts);
out.close();

//创建文件输入流(程序从文件输入字节流)
InputStream in =new FileInputStream(f1);
//通过f1.length()获取文件内容长度以提前申请字节流数组
byte inbts[]=newbyte[(int)f1.length()];
//将文件字节流输入到inbts变量中,并输入关闭字节流
in.read(inbts);
in.close();
System.out.println("file stream is: "+new String(inbts));
}
}

 

 

字符流——字节流转换

1、  文件保存的是字节流,而程序使用的是字符流,所以程序和文件之间的数据流需要有个转换器来转换一下,他们就是OutputStreamWriter和InputStreamReader。

如图

8、IO相关_字节流

         参考如下

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.Reader;
import java.io.InputStreamReader;

publicclass hello{
publicstaticvoid main(String args[])throws Exception{

File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");

//字节流读取
InputStream in =new FileInputStream(f1);
byte inbts[]=newbyte[(int)f1.length()];
in.read(inbts);
System.out.println("Byte Stream : "+new String(inbts));
in.close();

//字节流转字符流后再读取
InputStream inr =new FileInputStream(f1);
Reader r =new InputStreamReader(inr);
char c[]=newchar[100];
r.read(c);
System.out.println("String Stream: "+new String(c));
r.close();
}
}

 

 

其它流

1、  内存流,数据输向内存

2、  管道流,线程间通信

3、  打印流,提供打印功能,Sytem.out就是输出打印流对象,System.in是输入打印流对象

4、  等等

 

 

5、UTF是不定长编码,支持所有文字字符,所以java程序中一般使用UTF编码方式

 

 

 

 

 

举报

相关推荐

0 条评论