I/O总结
File类
File f1=new File("yang.txt");
File f2=new File("src\\mr\\yang.txt");
File f3=new File("C:\\Destk\\yang.txt");
File f4=new File("C:\\Destk\\","yang.txt");
File my=new File("C:\\Destk\\","yang.txt");
File f5=new File(my,"yang.txt");
使用:
f1.getAbsolutePath();//获得绝对路径
f1.getName();//输出文件名
f1.isHidden();//是否隐藏文件
f1.length();//输出文件大小,单位字节
f1.lastModified();//最后修改时间
补充:
Date date=new Date(f1.lastModified());
输出date就是最后显示时间
//或使用自定义的SimpledateFormat
Date date=new Date(f1.lastModified());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
输出sdf.format(date)就是最后显示时间
f1.exists();//文件是否存在
f1.delete();//文件是否删除成功,返回类型是boolean
f1.createNameFiel();//创建新空文件,返回类型是boolean,false创建失败
File类文件夹
File dir new File("文件夹名");
Boolean flag=dir.mkdir();
//多层文件夹
File dir new File("dir/dir2/dir3");
Boolean flag=dir.mkdir();
//删除文件夹
Boolean del=dir.delete();
//获取所有子文件返回数组
File dir new File("C:\\desck\\");//文件地址
File files=f.listFiles();//使用listFiles返回文件及其子文件夹
for(File tmp:files){
if(tmp.isFile()){//判断是否为文件
是文件
}else if(tmp.isDirectory()){
是文件夹
}
}
注意:以下都省略了对象创建、try以及关闭流的过程 ,纯属个人使用总结,如有问题欢迎提出
1.文件字节流—容易出现乱码
FileOutputStream
out=new FileOutputStream(f1,true);//true在文件末尾追加内容,false替换文件内容
String str=“1234564”;
byte b[]=str.getBytes();//字符串转化为字节数组
out.write(b);//将字节写入到文件
FileInputStream
in=new FileInputStream(文件);
byte b2[]=new byte[200];//读缓冲区
int len=in.read(b2);
System.out.println(new String(b2,0,len));//文件里数据去空格输出
2.文件字符流–不易乱码–不需要缓冲区
FileWriter文件字符输入流–写
fw=new FileWriter(f1);
String str=“我是测试!”;
fw.write(str);
FileReader文件输出流–读
fr=new FileReader(f1);
char ch[]=new char[1024];//注意缓冲区是char类型的
int count;//已经读出的字符数
while((count=fr.read(ch))!=-1){//不等-1即读完了
System.out.println(new String(ch,0,count));
}
3.缓冲字节流
提高运行效率,即使用文件字节流不再使用原来的缓冲区
BufferedOutputStream
out=new FileOutputStream(f1,true);
bo=new BufferedOutputStream(out);//放入
String str=“我是测试4654”;
byte b[]=str.getBytes();
//过去直接使用out.write(b);现在我们使用BufferedOutputStream,根据情况使用flush
bo.write(b);
bo.flush();//刷新,强制将缓冲区数据写入文件,即使没有写满
BufferedInputStream
in=new FileInputStream(f1);
bi=new BufferedInputStream(in);//放入
byte b[]=new byte[1024];
while(bi.read(b)!=-1){
//使用缓冲区读取到的数据
System.out.println(new String(b));
}
4.缓冲字符流–以行单位输入/输出
BufferedWriter写
fw=new FileWriter(f1);
bw=new BufferedWriter(fw);//将写入流包装成缓冲字符流
String str1=“我是再见!”;
String str2=“我是你好!”;
bw.write(str1);
bw.newLine();//创建新一行
bw.write(str2);
BufferedReader读
FileReader fw=null;//注意使用到FileReader
BufferedReader br=null;//使用
try{
fw=new FileReader(f1);
br=new BufferedReader(fw);
String tmp=null;
int i=1;//计数器
while((tmp=br.readLine())!=null){//读完条件
System.out.println(i+“行”+tmp);
i++;
}
}
5.数据流
DataOutputStream数据输出流
out=new FileOutputStream(f1,true);
dos=new DataOutputStream(out);
dos.writeUTF(“写入的字符串”);//可以写入各种类型的数据
dos.writeInt(132);
//dos.writeDouble(3.14);//最好不要挨着写 1233.14会认不出
dos.writeBoolean(true);
dos.writeDouble(3.14);
DataInputStream数据输入流
in=new FileInputStream(f1);
dos=new DataInputStream(in);
//dos.readByte();读字节型
System.out.println(dos.readChar());
System.out.println(dos.readInt());
System.out.println(dos.readBoolean());
System.out.println(dos.readFloat());
6.字符流转为字节流
字节流不可以转字符流
字符流转字节流 OutputStreamReader写
File f1=new File(“C:\Users\Administrator\Desktop\Test\Test.txt”);
FileOutputStream fos=null;
OutputStreamWriter osw=null;//字符流转化为字节流
BufferedWriter bw=null;
try{
fos=new FileOutputStream(f1);
osw=new OutputStreamWriter(fos,“UTF-8”);//按指定格式写入字符集
bw=new BufferedWriter(osw);
bw.write(“加油啊~”);
}
字符流转字节流 InputStreamReader读
FileInputStream fis=null;
InputStreamReader isw=null;//字符流转化为字节流
BufferedReader br=null;
try{
fis=new FileInputStream(f1);
isw=new InputStreamReader(fis,“UTF-8”);//按指定格式写入字符集
br=new BufferedReader(isw);
System.out.println(br.readLine());
}