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。
如图
参考如下
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编码方式
标签:AAA,字节,java,IO,File,new,相关,out From: https://blog.51cto.com/u_15906220/5920663