标签:
一、File类,所在包java.io
File f=new File("E:\\工具\\FeiQ\\1.txt");//创建文件三种方式
File f1=new File("E:\\工具\\FeiQ\\","1.txt");
File f2=new File("E:\\工具\\FeiQ");
File f3=new File("F:\\t1\\t2\\t3");
boolean b=f.isFile();//判断是否文件
System.out.println(b);
boolean b1=f2.isDirectory();//判断是否目录
System.out.println(b1);
long l=f1.length(); //求文件长度,单位:字节
System.out.println(l);
long l1=f1.lastModified();//返回距 1970-1-1的毫秒数
Date d=new Date(l1);
SimpleDateFormat sdf=new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd HH:mm:ss sss");
String s=sdf.format(d);
System.out.println(s);//打印最后修改时间
boolean b2=f1.isHidden();//判断是否隐藏
boolean b3=f1.canWrite();//判断是否可写
boolean b4=f1.exists(); //判断文件或目录是否存在
if(f3.getParentFile()!=null){
System.out.println(f3.getPath());//打印路径
}
//创建目录
System.out.println(f3.mkdirs());
System.out.println(f1.getName());//打印文件名
//打印目录里的所有文件
File [] files=f2.listFiles([过滤器]);
for (int i=0;i<files.length;i++){
System.out.println(files[i]);
}
}
二、流是一组有序的,有起点和终点的字节集合,是对计算机中数据传输的总称或者抽象。
字节流:按照传输的单位为字节的流叫字节流
字符流:按照传输的单位为字符的流叫字符流
按照传输的方向划分:输入流和输出流,程序从数据源中的数据流读取数据叫输入流,从当前程序向流中写入数据将信息送至目的端
细分为:字节输入流、字节输出流 字符输入流 字符输出流
1、InputStream 字节输入流,所在包java.io
FileInputStream是InputStream的子类
2、OutputStream 字节输出流,所在包java.io
FileOutputStream是outputStream的子类
如果在写入文件时,文件不存在,会自动创建一个文件但目录不会自动创建
写入时换行符用\r \n,linux下用\n
eg:复制文件到另一个磁盘
public static void main(String[] args) {
/*
* 读取飞秋文件
*/
FileInputStream in=null;
FileOutputStream out=null;
try {
//创建文件输入流,将文件写入字符串S
in = new FileInputStream("C:\\Program Files\\feiq\\FeiqCfg.xml");
//创建文件输出流,将字符串S输出到D盘a.txt,true表示追加输出
out=new FileOutputStream("D:\\a.txt",false);
byte[] b=new byte[1024];//创建1024字节
int len=0;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(in!=null){
try {
in.close();//关闭输入流
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(out!=null){
try {
out.close();//关闭输出流
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
三、字符输入流 FileReader FileReader是InputStreamReader的子类
字符输出流 FileWriter FileWriter是OutputStreamWriter的子类
File source=new File("D:\\a.txt");
File dest=new File("E:\\cc.txt");
FileReader in=null;
FileWriter out=null;
try {
in=new FileReader(source);
out=new FileWriter(dest);
char [] chs=new char[1024];
int len=0;
while((len=in.read(chs))!=-1){
out.write(chs, 0, len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(out!=null){
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上四个流都是节点流(跟节流)
四、压缩输出流ZipOutputStream
File source=new File("d:\\a.txt");
File dest=new File("d:\\1.rar");
InputStream in=new FileInputStream(source);
ZipOutputStream zout=new ZipOutputStream(new FileOutputStream(dest));
ZipEntry zip=new ZipEntry(source.getName());//定义ZIP入口
zout.putNextEntry(zip);//放入下一个入口
int tem=0;
while((tem=in.read())!=-1){
zout.write(tem);
}
in.close();
zout.close();
五、过滤流
给节点流增加某些功能,必须借助于节点流使用
FilterOutputStream
1、BufferedOutputStream是FilterOutputStream的子类,实现加缓存功能
File file=new File("d:\\a.txt");
OutputStream out=new FileOutputStream(file,true);
BufferedOutputStream bf=new BufferedOutputStream(out);
String s="我喜欢java11";
byte [] b= s.getBytes();
bf.write(b);
bf.flush();
bf.close();
2、BufferedReader的readline方法
Reader re=new FileReader("d:\\a.txt");
BufferedReader br=new BufferedReader(re);
String s= br.readLine();
System.out.println(s);
六、转换流 把字符流转成字节流或把字节流转换成字符流叫转换流InputStreamReader
InputStreamReader in=new InputStreamReader(new FileInputStream("d:\\a.txt")); //定义转换流
char c[] =new char[1024];
int len= in.read(c);
System.out.println(new String(c));
InputStreamReader in1=new InputStreamReader(System.in);//将字符流转换成字节流
BufferedReader bf=new BufferedReader(in1);//使用buffer流的readline方法
String s1= bf.readLine();
System.out.println(s1);
七、对象流
ObjectOutputStream 对象输出流
方法用writeobject
ObjectInputStream 对象输入流
方法用readobject
作业:1、读取一张图片,把实际读取的字节个数打印出来,再打印了多少次
2、复制一张图片到另一个磁盘
3、复制超大文件到副一个磁盘,添加百分比
标签:
原文地址:http://blog.csdn.net/cb_fxb/article/details/46519969