目录
三、FileInputStream与FileOutputStream类
五、BufferedInputStream与BufferedOutputStream类
六、BufferedReader与BufferedWriter类
七、DataInputStream与DataOutputStream类
一、流概述
物质在目的地之间的转移称为流
二、File类
File是代表文件对象,不是真正的文件,只是能对这个文件操作
package 流;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FILE {
public static void main(String[] args) {
File f1=new File("/JAVA学习/java从入门到基础/流/4郭博成.docx");
File f2=new File("/JAVA学习/java从入门到基础/流/","4郭博成.docx");
File f3=new File("\\JAVA学习\\java从入门到基础\\流\\4郭博成.docx");
File f4=new File("C:\\Users\\xiaoguotongxue\\Desktop\\4郭博成.docx");//绝对路径
System.out.println("文件名:"+f4.getName());
System.out.println("文件是否存在:"+f4.exists());
System.out.println("文件的绝对路径:"+f4.getAbsolutePath());
System.out.println("是否为隐藏文件"+f4.isHidden());
System.out.println("文件的字节数:"+f4.length());
Date date=new Date(f4.lastModified());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
System.out.println("文件最后的修改时间:"+sdf.format(date));
// TODO 自动生成的方法存根
}
}
package 流;
import java.io.File;
public class FILEwenjianjia {
public static void main(String[] args) {
File dir1=new File("dir");
boolean flag1=dir1.mkdir();//创建文件夹
System.out.println("创建文件夹是否成功"+flag1);
File dir2=new File("dir1/dir2/dir3/dir4/dir5");
boolean flag2=dir2.mkdirs();//创建文件夹
System.out.println("创建文件夹是否成功"+flag2);
// boolean del=dir2.delete();//删除文件夹
// System.out.println("删除文件夹是否成功"+del);
// TODO 自动生成的方法存根
File f=new File("C:\\Users\\xiaoguotongxue\\Desktop\\");
File files[]=f.listFiles();//返回文件夹下所有子文件和文件夹
for(File tmp:files) {
if(tmp.isFile()) {
System.out.println("文件: "+tmp.getName());
}
if(tmp.isDirectory()) {
System.out.println("文件夹: "+tmp.getName());
}
}
}
}
三、FileInputStream与FileOutputStream类
package 流;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class zijieliu {
public static void main(String[] args) {
File f=new File("word.text");
FileOutputStream out=null;
try {
out=new FileOutputStream(f,true);//文件输出流、true:添加、false:替换
String str="12345";
byte b[]=str.getBytes();//字符串转换为字节数组
out.write(b);//将字节数组中的数据写入到文件中
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(out!=null) {
try {
out.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
FileInputStream in=null;
try {
in=new FileInputStream(f);
byte b2[]=new byte [1024];//缓冲区
//in.read(b2);
int len=in.read(b2);//读入缓冲区的总字节数
System.out.println("文件中的数据是:"+new String(b2,0,len));
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(in!=null) {
try {
in.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
// TODO 自动生成的方法存根
}
}
四、FileReader与FileWriter类
package 流;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class zifulie {
public static void main(String[] args) {
File f=new File("word1.txt");
FileWriter fw=null;
try {
fw=new FileWriter(f);//true:原文件后追加新内容
String str="自强不息,厚德载物";
fw.write(str);
// TODO 自动生成的方法存根
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(fw!=null) {
try {
fw.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
FileReader fr=null;
try {
fr=new FileReader(f);
char ch[]=new char[1024];//缓冲区
int count;//已读出的字符数
while((count=fr.read(ch))!=-1) {//循环读取文件中的数据,直到都读完
System.out.println("文件中的内容为"+new String(ch));
}
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(fr!=null) {
try {
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
五、BufferedInputStream与BufferedOutputStream类
package 流;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.Buffer;
public class BUFFERzijie {
public static void main(String[] args) {
File f=new File("C:\\\\Users\\\\xiaoguotongxue\\\\Desktop\\","4郭博成.docx");
BufferedInputStream bi=null;//大大提高了运行效率
FileInputStream in=null;
long start=System.currentTimeMillis();//获取程序开始时的毫秒值
try {
in=new FileInputStream(f);
bi=new BufferedInputStream(in);//将文件字节流包装成缓冲字节流
byte b[]=new byte[1024];//缓冲区字节数组(与buffer不同)
while((bi.read(b))!=-1) {//使用缓冲区读取数据
}
long end=System.currentTimeMillis();//获取结束时的毫秒值
System.out.println("运行时进行的毫秒数"+(end-start));
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(in!=null) {
try {
in.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(bi!=null) {
try {
bi.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
File f2=new File("word.txt");
FileOutputStream out=null;
BufferedOutputStream bo=null;
try {
out=new FileOutputStream(f2);
bo=new BufferedOutputStream(out);//包装文件输出流
String str="天生我材必有用,千金散尽还复来";
byte b[]=str.getBytes();
bo.write(b);//使用缓冲字节输出流时,要多进行刷新操作
bo.flush();//刷新,强制将缓冲区数据写入文件,即使缓冲区
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(out!=null) {
try {
out.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
// TODO 自动生成的方法存根
}
}
六、BufferedReader与BufferedWriter类
package 流;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BUFFERzifu {
public static void main(String[] args) {
File f=new File("word3.txt");
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(f);
bw=new BufferedWriter(fw);
String str1="世界这么大";
String str2="我想去看看";
bw.write(str1);//第一行的数据
bw.newLine();//创建一个新行
bw.write(str2);//第二行的数据
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {//注意流关闭的顺序,先创建后关闭
if(bw!=null) {
try {
bw.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
if(fw!=null) {
try {
fw.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(f);
br=new BufferedReader(fr);
String tmp=null;
int i=1;
while((tmp=br.readLine())!=null) {
System.out.println("第"+i+"行:"+tmp);
i++;
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(br!=null) {
try {
br.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(fr!=null) {
try {
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
// TODO 自动生成的方法存根
}
}
七、DataInputStream与DataOutputStream类
package 流;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class DATA {
public static void main(String[] args) {
File f=new File("word4.txt");
FileOutputStream out=null;
DataOutputStream dos=null;
try {
out=new FileOutputStream(f);
dos=new DataOutputStream(out);//将文件包装为数据流
dos.writeUTF("这是写入字符串数据:");
dos.writeInt(123);
dos.writeBoolean(true);
dos.writeDouble(3.14);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(dos!=null) {
try {
dos.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(out!=null) {
try {
out.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
FileInputStream in=null;
DataInputStream di=null;
try {
in=new FileInputStream(f);
di=new DataInputStream(in);
System.out.println("readUTF()读取数据:"+di.readUTF());//读取String类型的数据
System.out.println("readDouble()读取数据:"+di.readDouble());//读取Double类型的数据
System.out.println("readInt()读取数据:"+di.readInt());//读取Int类型的数据
System.out.println("readBoolean()读取数据:"+di.readBoolean());//读取Boolean类型的数据
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(di!=null) {
try {
di.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(in!=null) {
try {
in.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
// TODO 自动生成的方法存根
}
}