day08(File类 ,字节流)
File类
构造方法
File(String path);
FIle(String parent, String child);
File(File parent, String child)
功能:
创建功能 boolean createNewFile();
删除功能 boolean delect();
判断功能 返回值为boolean
判断是否为绝对路径 isAbsolute();
判断是否为文件夹 isdirectory();
判断是否为文件 isFile();
获取功能
//获取文件绝对路径
File getAbsoluteFile();
String getAbsolutePath();
//获取传递路径
String getPath();
//获取父路径
String getParent();
//获取文件大小
long length();
public class FileTest {
public static void main(String[] args) throws IOException {
File file1=new File("b.txt");
long l = file1.length();
long m = file1.lastModified();
Date d=new Date(m);
System.out.println(d.toLocaleString());
System.out.println(l);
}
}
输出结果:
2017-9-2 13:39:34
3
//获取文件最后一次的修改时间
long lastModified(); 返回值为毫秒值
public class FileTest {
public static void main(String[] args) throws IOException {
File file1=new File("b.txt");
File file2=new File("a\\b.txt");
File file3=new File("C:\\a.txt");
//获取绝对路径
System.out.println("获取绝对路径");
File absoluteFile1= file1.getAbsoluteFile();
File absoluteFile2 = file2.getAbsoluteFile();
File absoluteFile3 = file3.getAbsoluteFile();
String absolutePath1 = file1.getAbsolutePath();
String absolutePath2 = file2.getAbsolutePath();
String absolutePath3 = file3.getAbsolutePath();
System.out.println(absoluteFile1);
System.out.println(absoluteFile2);
System.out.println(absoluteFile3);
System.out.println(absolutePath1);
System.out.println(absolutePath2);
System.out.println(absolutePath3);
System.out.println("------------");
//获取传递路径
System.out.println("获取传递路径");
String path1 = file1.getPath();
String path2 = file2.getPath();
String path3 = file3.getPath();
System.out.println(path1);
System.out.println(path2);
System.out.println(path3);
System.out.println("------------");
//获取父路径(按照传递进去的文件路径获取的)
System.out.println("获取父路径(按照传递进去的文件路径获取的)");
String parent1 = file1.getParent();
String parent2 = file2.getParent();
String parent3 = file3.getParent();
System.out.println(parent1);
System.out.println(parent2);
System.out.println(parent3);
}
}
输出结果:
获取绝对路径
D:\java\myeclipse\ITEM\JYBDemo\b.txt
D:\java\myeclipse\ITEM\JYBDemo\a\b.txt
C:\a.txt
D:\java\myeclipse\ITEM\JYBDemo\b.txt
D:\java\myeclipse\ITEM\JYBDemo\a\b.txt
C:\a.txt
------------
获取传递路径
b.txt
a\b.txt
C:\a.txt
------------
获取父路径(按照传递进去的文件路径获取的)
null
a
C:\
字节流 (和字符流的用法一样,字符流只能读文本文件。)
输出字节流(写数据) OutputStream(抽象类)----FileOutputStream(实现类)
输入字节流(读数据) InputStream(抽象类)-----FileInputStream(实现类)
eg: 复制文件
public class FileTest {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("b.txt"); //读文件
FileOutputStream fos=new FileOutputStream("a\\b.txt");//写文件
int len;
byte[] bt=new byte[1024*1024*5];//5M
while ((len=fis.read(bt))!=-1) {
fos.write(bt,0,len);
}
fis.close();
fos.close();
}
}
eg02 复制文件夹
public class FileCopyNew {
public static void main(String[] args) throws IOException {
String src="D:\\java\\myeclipse\\ITEM\\JYBDemo\\a";//d:\\str 要复制的文件夹路径
String dsc="D:\\java\\myeclipse\\ITEM\\JYBDemo\\aa";//c:\\g 要复制到的文件夹路径
copy(dsc,src);
}
private static void copy(String dsc, String src) throws IOException {
File df=new File(dsc);//目的
File sf=new File(src);//源文件夹
String s=df.getAbsolutePath()+"\\"+sf.getAbsolutePath().substring(sf.getParent().length());
File file=new File(s);
if (sf.isDirectory()) {
file.mkdir();//给目的文件夹创建文件夹
File[] files = sf.listFiles();
for (File file2 : files) {
copy(s, file2.toString());
}
}else{
//file.createNewFile();
chuanShu(sf.getAbsolutePath(),file.toString());
}
}
private static void chuanShu(String des,String src) throws IOException {
FileInputStream fis=new FileInputStream(des);
FileOutputStream fos=new FileOutputStream(src);
int len;
byte[] b=new byte[1024*1024*50];
while ((len=fis.read(b))!=-1) {
fos.write(b,0,len);//一次读一个字节数组
}
fis.close();
fos.close();
}
}
过滤器
public class MyFileFilter implements FileFilter{//自定义过滤器
@Override
public boolean accept(File f) {
if (f.getName().endsWith(".java")) {
return true;
}
if (f.isDirectory()) {
return true;
}
return false;
}
}
public class FileTest {
public static void main(String[] args) throws IOException {
File f=new File("a");
method(f);
}
private static void method(File f) {
File[] Files = f.listFiles(new MyFileFilter());
for (File file : Files) {
if (file.isDirectory()) {
method(file);
}else{
System.out.println(file);}//输出文件类型为java文件
}
}
}
day08(File类 ,字节流)的更多相关文章
- java IO之 File类+字节流 (输入输出 缓冲流 异常处理)
1. File类
- 第二十天File类、字节流
File类.字节流 File类 File类介绍 File:它是描述持久设备上的文件或文件夹的.只要是在Java程序中操作文件或文件夹肯定需要使用File类完成. File类构造方法 /* * File ...
- JAVA IO分析一:File类、字节流、字符流、字节字符转换流
因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...
- IO流(File类,IO流的分类,字节流和字符流,转换流,缓冲流,对象序列化)
1.File类 File类可以在程序中 操作文件和目录.File类是通过建立File类对象,在调用File类的对象来进行相关操作的. 示例: public class Demo01 { public ...
- Java基础14-缓冲区字节流;File类
作业解析 阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader对Rea ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- IO流--字符流与字节流--File类常用功能
IO流的常用方法: 1: 文件的读取和写入图解: 2:字节流: 读写文件的方法: 一般效率读取: 读取文件: FileInputStream(); 写数据: Fil ...
- 关于Java的File类、字节流和字符流
一.File类: 在Windows下的路径分隔符(\)和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报No Such file or diretory异常. File中还 ...
- File类常用的方法与字节流类方法简介
File类常用的方法 获取功能的方法 public String getAbsolutePath() :返回此File的绝对路径名字符串. public String getPath() :将此Fil ...
随机推荐
- DateUtil日期处理
package com.zjx.util; import java.text.SimpleDateFormat; import java.util.Date; public class DateUti ...
- Haskell语言学习笔记(53)Data.Sequence
Data.Sequence Prelude> import Data.Sequence as Seq Prelude Seq> :set -XOverloadedLists Prelude ...
- 常见jsp跳转总结
这次做项目,用到几种不同的JSP跳转的方式,在此总结5中常用方法. 常用的跳转方式有以下几种: (1)href超链接标记,属于客户端跳转 (2)使用javascript完成,属于客户端跳转 (3)提交 ...
- 使用UUID方法生成全球唯一标识
需要生成唯一字符串,如生成应用标识等,可以直接用java.util.UUID类实现. UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字, ...
- Android笔记:RelativeLayout
RelativeLayout 又称作相对布局,也是一种非常常用的布局.和 LinearLayout 的排列规则不同,RelativeLayout 显得更加随意一些,它可以通过相对定位的方式让控件出现在 ...
- 第八章 高级搜索树 (b2)B-树:结构
- 【校招面试 之 C/C++】第18题 C++ 中的隐式转换以及explicit关键字
1.什么是隐式转换: 众所周知,C++的基本类型中并非完全的对立,部分数据类型之间是可以进行隐式转换的. 所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为.很多时候用户可能都不知道进行了 ...
- HttpClient实战二:单线程和多线程连接池实例
为什么使用HTTP连接池? 随着系统架构风格逐渐向前后端分离架构,微服务架构转变,RestFul风格API的开发与设计,同时SpringMVC也很好的支持了REST风格接口.各个系统之间服务的调用大多 ...
- java web 常用正则
什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配. 通常用于格式验证.正则替换.查找子串等 各种编程语言的正则表达式基本相同 ...
- spring中配置监听队列的MQ
一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置. <bean id="axx" ...