1、File类

package LESSON12;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo1 {
/**
* Windows中文件或者目录的表示D:\test\1.txt
Java中文件或者目录的表示D:\\test\\1.txt,或者D:/test/1.txt
*/
public static void main(String[] args) {
//File:表示磁盘上的文件或者目录
File f1=new File("E:/aa/a/a.txt");
//File f=new File("E:\\aa\\a/a.txt");//这样写也行
File f2=new File("E:\\aa\\a\\a.txt"); File f3=new File("E:/aa/a","a.txt");
File f4=new File("E:\\aa\\a","a.txt"); File f5=new File("E:/aa/a");
File f6=new File(f5,"a.txt"); System.out.println(f1.getName());//获取文件对象名(文件夹或文件)
System.out.println(f2.getName());
System.out.println(f3.getName());
System.out.println(f4.getName());
System.out.println(f5.getName());
System.out.println(f6.getName()); //System.out.println(f.canRead());
System.out.println(f1.canWrite());//是否可读
System.out.println(f1.canRead());//是否可写
//f1.delete();//删除
//f1.deleteOnExit();//退出JVM时删除。即运行完一次程序删除文件,下次在运行时文件已经删除 System.out.println("-------------------------");
System.out.println(f1.exists());
System.out.println(f1.getPath());//以String类型返回绝对路径
System.out.println(f1.getAbsolutePath());//以String类型返回绝对路径
System.out.println(f1.getAbsoluteFile());//以File类型返回绝对路径
System.out.println(f1.getParent());//以String类型返回父类
System.out.println(f1.getParentFile());//以File类型返回父类
System.out.println(f1.isFile());//是否是文件
System.out.println(f1.isDirectory());//是否是目录
System.out.println(f1.isHidden());//是否隐藏
System.out.println(f1.length());//返回文件对象的长度 System.out.println("-----------------");
long lastime=f1.lastModified();//表示文件最后一次被修改的时间的 long 值,用与时间点(1970 年 1 月 1 日,00:00:00 GMT)之间的毫秒数表示
System.out.println(lastime);//毫秒数 1561176411802 //public Date(long date)
//分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
String time=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss").format(new Date(lastime));
System.out.println(time); System.out.println("---------------------");
File f7=new File("E:/aa");
String strList[]=f7.list();//以String类型返回该文件对象下的其他文件
for (int i = 0; i < strList.length; i++) {
System.out.println(strList[i]);//只有名称
} File fileList[]=f7.listFiles();//以File类型返回该文件对象下的其他文件
for (int i = 0; i < fileList.length; i++) {
System.out.println(fileList[i]);
String sonList[]=fileList[i].list();
for (int j = 0; j < sonList.length; j++) {
System.out.println(sonList[j]);//只有名称
} } System.out.println("-------------------------");
File file8=new File("E:/aaaa/aaa/aaa.txt");
System.out.println(file8.getName());//无论文件是否存在都能得到文件名
System.out.println(file8.canRead());//未创建文件时为false File parentFile=file8.getParentFile();
if(!parentFile.exists()){
//parentFile.mkdir();//创建单个文件夹,如用其创建file8时会报错java.io.IOException: 系统找不到指定的路径。
parentFile.mkdirs();//创建多个文件夹(连同子文件夹一起创建)
}
try {
file8.createNewFile();//创建文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} File file9=new File("E:/aaa/aa");
file9.mkdirs();//创建文件夹
}
}

2、流

流是一组有序的,有起点和终点的字节集合,是对计算机中数据    传输的总称或者抽象。
     即数据在两个设备间的传输称为流,流的本质是数据传输的载体。  
    流序列中的数据可以是没有进行加工的原始数据(二进制字节数    据),也可以是经过编码的符合某种格式规定的数据,Java中提    供了不同的流类对它们进行处理。
3、IO流

输入输出是对程序而言,不是对数据源。输入即输入数据到程序中也就是从流中读取数据,输出即从程序中输出数据也就是向流中写入数据。

输入流(InputStream)
    在Java中,程序可以打开一个输入流,输入流的信息源可以位于文件、内存或网络套接字(socket)等地方,信息源的类型可以是包括对象、字符、图像、声音在内的任何类型。一旦打开输入流后 程序就可从输入流串行地读取数据。


输出流(OutputStream)
    类似地,程序也能通过打开一个输出流并顺序地写入数据来将信息送至目的端。

4、字节流

字节流的概念
    传输的数据单位是字节,也意味着字节流能够处理任何一种文件
字节流的组成
    字节输入流 InputStream
    字节输出流 OutputStream

字节输入流FileInputStream

package LESSON12;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class demo2 {
public static void main(String[] args) throws Exception {
//创建字节输入流对象
FileInputStream fis=new FileInputStream(new File("E:\\abc\\a.txt"));
//读取数据
//int i=fis.read();//1读取单个字符
//System.out.println(i);
// System.out.println(i);
// System.out.println(i);
// System.out.println(i); // byte b[]=new byte[1024];//2
// fis.read(b);//以数组字节的长度读取数据
// System.out.println(new String(b).trim()); byte b[]=new byte[20];//3
//int read(byte[] bs, int off, int len) off为偏移量,即等多少字节之后再开始读取
//off+len不能超过byte数组的长度,否则会报java.lang.IndexOutOfBoundsException异常
fis.read(b, 0, b.length); System.out.println(new String(b));
fis.close();//关流
}
}

字节输出流FileOutputStream

package LESSON12;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo3 {
public static void main(String[] args) throws Exception {
File file8=new File("E:xyz/xyz.txt");
File parentFile=file8.getParentFile();
if(!parentFile.exists()){
//parentFile.mkdir();//创建单个文件夹,如用其创建file8时会报错java.io.IOException: 系统找不到指定的路径。
parentFile.mkdirs();//创建多个文件夹(连同子文件夹一起创建)
}
try {
file8.createNewFile();//创建文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //创建字节输出流对象
FileOutputStream fos=new FileOutputStream(file8,true);//true:追加,即执行完一次程序后第二次运行还会添加相同的1内容
//fos.write(100);//1写入数据 显示为b
fos.write("今天周六".getBytes());//2以字节数组的形式写入数据
byte b[]="明天休息".getBytes();
fos.write(b, 0, b.length);//3 fos.close();
}
}

字节流的拷贝

package LESSON12;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
public class demo4 {
public static void main(String[] args) throws Exception {
// 字节流的拷贝
File filefrom=new File("D:/弹性表达式.doc ");//待拷贝文件
File fileto=new File("E:文档/弹性表达式.doc ");//拷贝之后的文件
File parentFile =fileto.getParentFile();//以File类型返回父类
if(!parentFile.exists()){//如果父类文件对象不存在
parentFile.mkdirs();//创建多个文件夹
}
fileto.createNewFile();//创建文件
FileInputStream fis=new FileInputStream(filefrom);
FileOutputStream fos=new FileOutputStream(fileto); // int i=fis.read();//单个字符读取,速度慢
// while(i!=-1){
// fos.write(i);
// i=fis.read();
// } byte b[]=new byte[1024];
int i=fis.read(b);
while(i!=-1){
fos.write(b);
i=fis.read(b);
} //关流:先开的后关
//先关过滤流,再关节点流,先关输出流,再管输入流
fos.close();
fis.close(); } }

5、字符流

字符节点输入流   复制图片会出现错误

字符输入流

package LESSON12;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class demo6 {
public static void main(String[] args) throws Exception {
//创建字符输入流对象(将文件中的每个数据当作字符来读取)
FileReader fr=new FileReader(new File("E:\\abc\\a.txt"));
//读取数据
// int i=fr.read();
//System.out.println(i);
char b[]=new char[100];
fr.read(b);
System.out.println(new String(b).trim());
//关流
fr.close();
}
}

字符输出流

package LESSON12;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class demo7 {
public static void main(String[] args) throws Exception {
//创建字符输出流(在关闭时才能写入数据)
FileWriter fw=new FileWriter(new File("E:\\abc\\a.txt"),true);
fw.write("今天周一,开始上班咯");//字符流可以直接写入数据,但是在调用关闭方法的时候才会执行
fw.close();
}
}

字符流复制

package LESSON12;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
public class demo8 {
public static void main(String[] args) throws Exception {
// 字符流复制
File filefrom=new File("E:abc\\a.txt");
File fileto=new File("E:文档\\a.txt");
FileReader fr=new FileReader(filefrom);
FileWriter fw=new FileWriter(fileto);
File parentfile=fileto.getParentFile();
if(!parentfile.exists()){
parentfile.mkdirs();
}
fileto.createNewFile();
char b[]=new char[1024];
int i=fr.read(b);
while(i!=-1){
fw.write(b);
i=fr.read(b);
}
fr.close();
fw.close();
}
}

6、过滤流

过滤流速度读写数据更快

过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
过滤流的开发步骤
    创建节点流
    基于节点流创建过滤流
    读/写数据
    关闭外层流

输入流

package LESSON12;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
public class demo9 {
public static void main(String[] args) throws Exception {
//字节流类型要和过滤流类型一致
//FileInputStream 对 BufferedInputStream
//FileReader对 BufferedReader // FileInputStream fis=new FileInputStream("E:abc\\a.txt");//字节节点输入流
// BufferedInputStream bis=new BufferedInputStream(fis);//字节过滤输入流
// byte b[]=new byte[1024];
// bis.read(b);
// System.out.println(new String(b));
FileReader fr = new FileReader("E:abc\\a.txt");//字符节点输入流
BufferedReader br = new BufferedReader(fr);//字符节点输入流
char b[]=new char[100];
br.read(b);
System.out.println(new String(b).trim());
}
}

输出流

package LESSON12;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
public class demo10 {
public static void main(String[] args) throws Exception {
//节点流类型要和过滤流的类型一致
// FileOutputStream fos=new FileOutputStream("E:abc\\a.txt",true);//字节节点输出流
//
// BufferedOutputStream bos=new BufferedOutputStream(fos);//过滤节点输出流
//
// bos.write("JJJJJ".getBytes());
// bos.close();
// fos.close();
FileWriter fw = new FileWriter("E:abc\\a.txt",true);//字符节点输出流
BufferedWriter bw = new BufferedWriter(fw);//字符过滤输出流
bw.write("我爱学习");
bw.close();
fw.close();
}
}

注:关闭的顺序,先关过滤流,再关节点流,先关输入流,再关输出流。
7、对象流

在java中,如果想在对象流中储存或者传送任何一个类,我们需要对类实现序列化,即该类必须实现Serializable接口。

File类以及IO流的更多相关文章

  1. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  2. File类与IO流

    一.File类与IO流 数组.集合等内容都是把数据放在内存里面,一旦关机或者断电,数据就会立刻从内存里面消失.而IO主要讲文件的传输(输入和输出),把内存里面的数据持久化到硬盘上,如.txt .avi ...

  3. Java入门之File类和IO流

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作 . 构造方法: public File(String pathname) :通过将 ...

  4. Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)

    1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...

  5. Java File类与IO流

    File 类 java.io.File 文件和目录路径名的抽象表示形式, 对文件或目录进行操作 构造方法: File(File parent, String child) : 根据 parent 抽象 ...

  6. 详谈JAVA中的file类与IO流

    File类 位置于java.io包构造方法:File(String parent, String child)new file("d:\\","a.txt") ...

  7. IO流(File类,IO流的分类,字节流和字符流,转换流,缓冲流,对象序列化)

    1.File类 File类可以在程序中 操作文件和目录.File类是通过建立File类对象,在调用File类的对象来进行相关操作的. 示例: public class Demo01 { public  ...

  8. file类和io流

    一.file类 file类是一个可以用其对象表示目录或文件的一个Java.io包中的类 import java.io.File; import java.io.IOException; public ...

  9. JavaSE复习(四)File类与IO流

    File类 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例. public File(String parent ...

  10. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

随机推荐

  1. 写一个react hook:useLoading

    在写业务的过程中,我们总是会遇到这样的需求,在请求时显示一个 loading,然后请求结束后展示数据.以一个是不是 vip 的场景为例,如果不加入 loading 状态,页面可能在未请求的时候显示非 ...

  2. puppetlabs地址

    https://yum.puppetlabs.com/el/6Server/products/i386/ rpm -Uvh  http://yum.puppetlabs.com/el/6Server/ ...

  3. 【Linux】tcpdump

    tcpdump介绍 tcpdump 是一个运行在命令行下的抓包工具.它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包.tcpdump 适用于 大多数的类Unix系统操作系统 ...

  4. k8s集群中遇到etcd集群故障的排查思路

    一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: 1 2 3 4 5 6 7 8 9 10 11 [roo ...

  5. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  6. 获取网页url中的参数

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. CMU数据库(15-445)实验2-b+树索引实现(上)

    Lab2 在做实验2之前请确保实验1结果的正确性.不然你的实验2将无法正常进行 环境搭建地址如下 https://www.cnblogs.com/JayL-zxl/p/14307260.html 实验 ...

  8. Spring-01-事务

    Spring事务机制 spring事务机制最重要的两个配置项,隔离级别和传播特性. 1. 隔离级别 隔离级别针对高并发问题导致的数据库丢失更新问题 1.1 数据库的4大基本特征 原子性(Atomic) ...

  9. Vue基础之插值表达式的另一种用法!附加变量的监听!

    Vue基础之插值表达式的另一种用法!附加变量的监听! 讲这个之前我们先回顾一下原来的用法! <body> <!-- Vue.js的应用可以分为两个重要的组成部分 一个是视图! 另一个 ...

  10. Docker逃逸

    初识Docker逃逸 - FreeBuf网络安全行业门户 https://www.freebuf.com/articles/container/242763.html