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. 4.5万字手把手教你实现MySQL TB级数据存储!!

    写在前面 业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示. 系统架构中不存在单点问题. 可以最大限度的保障服务的可用性. 一般情况下系统的高可用可以用几个9来评估.所谓的几个9 ...

  2. go语言中运算符

    Go语言学习笔记(运算符)-day01 go语言中与其他语言一样,存在多种运算符,下表列出了go语言中的运算符类型 算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 ...

  3. 为什么.NET Standard 仍然有意义?

    .NET Standard 是.NET 官方的API规范,可在许多.NET环境中使用.之所以存在,面向.NET Standard 2.0的库提供了最大可能的覆盖范围,并启用了几乎所有现代的.NET功能 ...

  4. 【MyBatis】MyBatis 注解开发

    MyBatis 注解开发 文章源码 环境搭建 Mybatis 也可以使用注解开发方式,这样就可以减少编写 Mapper 映射文件. 常用注解说明: @Insert 实现新增 @Update 实现更新 ...

  5. Centos 7 杂章

    CentOS-7-x86_64-DVD-2003.iso 下载地址: http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DV ...

  6. python3.6安装教程

    Python代码要运行,必须要有Python解释器.Python3.x的版本是没有什么区别的,这里以3.6版本来演示安装的过程.这里只介绍Windows环境下的安装. 下载安装程序 Python官方的 ...

  7. 实操|如何将 Containerd 用作 Kubernetes runtime

    日前专为开发者提供技术分享的又拍云 OpenTalk 公开课邀请了网易有道资深运维开发工程师张晋涛,直播分享<Containerd 上手实践 >,详细介绍 Containerd 的发展历程 ...

  8. SAPLink 非常好用的工具

    对于SAP LINK,如果你想将一个程序完整的保存到本地,包括程序的自定义屏幕.菜单等等,那么请使用这个工具,它能够将一个程序完整的保存下来,并且移植到另一个SAP系统中,用来左程序的迁移和本地保存备 ...

  9. codeup 1934 查找元素

    题目描述: 输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1. 输入: 测试数据有多组,输入n(1<=n<=200), ...

  10. WinForm中实现按Enter将光标移动到下一个文本框

    首先窗体加载出来是上面这个样子.有五个文本框,我们要实现的功能就是输入姓名后按Enter,使光标直接定位到手机号中. 在页面加载的时候我们就要获取所有文本框控件,并添加回车事件 private voi ...