目录

1.1转换流

1.1.1概述

1.1.2 InputStreamReader

1.2打印流

1.2.1概述

1.2.2 使用

1.3 对象流 / 序列化

1.3.1 概述

1.3.2序列化

1.3.4注意

1.4serialVersionUID

1.5Transient

1.6 File

1.6.1 概述

1.6.2  构造方法

1.6.3 常用方法

1.6.4 使用方式


1.1转换流

1.1.1概述

输入流 : InputStreamReader

输出流 : OutputStreamWriter 

特点 :

转换流是指将字节流向字符流的转换 ,主要有InputStreamReader和OutputStreamWriter

InputStreamReader : 主要是将字节流输入转换为字符输入流

OutputStreamWriter : 主要数将字节输出流转换为字符输出流

1.1.2 InputStreamReader

package com;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;/*** 字节输入流 转 字符输入流* * @author 人间失格* @data     2021年10月27日下午6:41:35*/
public class IO_01_InputStreamReader {public static void main(String[] args) throws Exception {//字节输入FileInputStream fis = new FileInputStream("D:/a.txt");//转为字符输入InputStreamReader isr = new InputStreamReader(fis);//缓冲流    提高效率BufferedReader br = new BufferedReader((isr));String temp = null ;while ((temp=br.readLine())!=null){System.out.println(temp);}}
}

1.2打印流

1.2.1概述

特点 :

打印流是输出最方便的类

包含字节打印流PrintStream , 字符打印流PrintWriter

PrintStream是OutputStream的子类 , 把一个输出流的实例传递到打印流之后,可以更加方便的输出内容,相当于把输出流重新包装一下

PrintStream类的print()方法被重载很多次print(int i)、print(boolean b)、print(char c)

标准输入/输出

Java的标准输入/输出分别通过System.in和System.out来代表,在默认的情况下分别代表键盘和显示器,当程序通过System.in来获得输入时,实际上是通过键盘获得输入。当程序通过System.out执行输出时,程序总是输出到屏幕。

在System类中提供了三个重定向标准输入/输出的方法

static void setErr(PrintStream err) : 重定向"标准"错误输出流

static void setIn(InputStream in) : 重定向"标准"输入流

ststic void setOut(PrintSteam) :  重定向"标准"输出流

1.2.2 使用

package com;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;/*** 打印流* * @author 人间失格* @data     2021年10月27日下午6:59:28*/
public class IO_02_PrintStream {public static void main(String[] args) throws FileNotFoundException {//创建字节输出流FileOutputStream fos = new FileOutputStream("D:/b.txt");//封装为打印流PrintStream ps = new PrintStream(fos);//调用方法进行打印//换行ps.println();ps.println("我想吃烤肉呀!!");ps.println("可是我在敲代码!!!");ps.println(true+"我是Boolean型");ps.println("数子也可以呢 : "+12345);//使用System自带的打印流 , 默认打印到控制台System.out.println("=====");//更改打印位置,把默认打印到控制台的打印到指定的位置System.setOut(ps);System.out.println();System.out.println("也没有钱去吃,555");}
}

1.3 对象流 / 序列化

1.3.1 概述

序列化 : ObjectOutputStream 把对象保存在硬盘中
 
 反序列化 : ObjectInputStream : 把硬盘中的对象载入到内存中

创建对象的几种方式 : 
                               1. new用的是最多最频繁的
                               2. 反射机制
                               3. clone 克隆 已经过时,被反序列化代替了
                               4. 反序列化
 目的 : 长期存储 , 对象传递
 
 应用场景 : 
                    序列化就是将数据对象转换为二进制流,从而可以进行数据持久化和网络传输
                    如果对象不进行序列化操作,那么没有办法存储和传递
                    
   数据对象->序列化->二进制流->加密处理->网络传递->解密处理->反序列化->数据对象
   
   某个对象想要被序列化,那么该类必须实现Serializable接口,该接口没有任何方法功能,只是一种标记

1.3.2序列化

package com;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;/*** 序列化 : ObjectOutputStream 把对象保存在硬盘中* * 反序列化 : ObjectInputStream : 把硬盘中的对象载入到内存中* * 创建对象的几种方式 : *                                1. new用的是最多最频繁的*                                2. 反射机制*                                3. clone 克隆 已经过时,被反序列化代替了*                                4. 反序列化* 目的 : 长期存储 , 对象传递* * 应用场景 : *                    序列化就是将数据对象转换为二进制流,从而可以进行数据持久化和网络传输*                    如果对象不进行序列化操作,那么没有办法存储和传递*                    *   数据对象->序列化->二进制流->加密处理->网络传递->解密处理->反序列化->数据对象*   *   某个对象想要被序列化,那么该类必须实现Serializable接口,该接口没有任何方法功能,只是一种标记*   * @author 人间失格* @data     2021年10月27日下午7:27:54*/
public class IO_04_ObjectOutputStream {public static void main(String[] args) throws Exception {//创建对象User user = new User("大聪明", 20);//创建输出流FileOutputStream fos = new FileOutputStream("D:/e.txt");//创建对象流ObjectOutputStream oos = new ObjectOutputStream(fos);//写对象oos.writeObject(user);//刷缓存,关闭资源oos.flush();oos.close();}}

1.3.3反序列化

package com;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.ObjectInputStream;public class IO_05_ObjectInputStream {public static void main(String[] args) throws Exception {//创建输入流FileInputStream fis = new FileInputStream("D:/e.txt");//从硬盘到内存ObjectInputStream ois = new ObjectInputStream(fis);Object o = ois.readObject();System.out.println(o);User user = (User) o ;}}

1.3.4注意

要序列化的对象,该类必须实现Serializable接口

1.4serialVersionUID

1.5Transient

1.6 File

1.6.1 概述

java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关

File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

File对象可以作为参数传递给流的构造器

1.6.2  构造方法

1.6.3 常用方法

获取功能:

public String getAbsolutePath():获取绝对路径

public String getPath() :获取路径

public String getName() :获取名称

public String getParent():获取上层文件目录路径。若无,返回null

public long length() :获取文件长度(即:字节数)。不能获取目录的长度。

public long lastModified() :获取最后一次的修改时间,毫秒值

public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组

public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组

重命名功能:

public boolean renameTo(File dest):把文件重命名为指定的文件路径

判断功能:

 public boolean isDirectory():判断是否是文件目录

public boolean isFile() :判断是否是文件

public boolean exists() :判断是否存在

public boolean canRead() :判断是否可读

public boolean canWrite() :判断是否可写

public boolean isHidden() :判断是否隐藏

创建删除功能:

public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false

public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。

public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建

注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目 路径下。

public boolean delete():删除文件或者文件夹

删除注意事项:

Java中的删除不走回收站。

要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

1.6.4 使用方式

package com;import java.io.File;
import java.io.IOException;/*** File 进行文件和文件夹操作,不能访问数据* * @author 人间失格* @data     2021年10月27日下午8:14:33*/
public class IO_06_File_01 {public static void main(String[] args) throws IOException {//创建一个文件对象File f1 = new File("F:\\111\\222\\333");//获取全路径System.out.println(f1.getAbsolutePath());//判断是否是文件System.out.println(f1.isFile());//判断是否是目录System.out.println(f1.isDirectory());//获取父路径System.out.println(f1.getParent());//父目录对象System.out.println(f1.getParentFile());//判断该目录或该文件 是否存在System.out.println(f1.exists());//创建f1 = new File("D:/a/b/c");if(!f1.exists()){//创建文件,如果有该文件就不创建了,但是不会创建目录//如果创建了,返回true , 如果没有创建 就返回falseboolean isCreate = f1.createNewFile();System.out.println(isCreate);}else {//程序到这里说明存在//删除该文件f1.delete();}f1  =new File("F:\\111\\222\\333");//获取所有子文件File [] subFile = f1.listFiles();for(File file : subFile){System.out.println(file.getName());}}
}

Java IO 、 File 、 文件复制相关推荐

  1. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  2. 利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

    2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm ...

  3. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  4. Java文件类– java.io.File

    Java File class is at the center of Java IO operations. Java File类是Java IO操作的中心. Java文件类 (Java File ...

  5. 使用java.io.File操作文件及文件夹

    如果有兴趣了解更多相关内容,可以来我的个人网站看看:eyes++的个人空间 一:File类的概述 java有个io包,java用于操作流的对象都在io包中,io流简单来说就是input和output流 ...

  6. java io大文件_JavaIO流对大文件进行分割与合并

    对于大文件传输不方便时候可以试一下分割之后再操作: package com.lym; import java.io.BufferedInputStream; import java.io.Buffer ...

  7. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

  8. java:IO流(缓冲流、对象流、控制台IO、转换流、java.io.File 类 )

    目录 一.IO 流的结构体系 二.缓冲流:BufferedInputStream & BufferedOutputStream 三.对象流:ObjectInputStream & Ob ...

  9. java io在文件结尾持续添加内容

    [代码] java io在文件结尾持续添加内容 public static void write(String path, String content) {try {File f = new Fil ...

  10. Java IO: File

    转载自  Java IO: File 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO API中的FIle类可以让你访问底层文 ...

最新文章

  1. c语言一对圆括号不能,C语言单元习题集
  2. UA MATH567 高维统计II 随机向量11 kernel的构造 用内积替换反三角函数
  3. Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
  4. P2285 [HNOI2004]打鼹鼠
  5. 4.3 欠拟合与过拟合
  6. 《软件架构师的12项修炼》读书笔记-技术之天花板
  7. ABAP Netweaver和git的快捷方式
  8. 不一样的ZTree,权限树.js插件
  9. python迷宫最短路径_python实现最短路径的实例方法
  10. 5G NR 标准:下一代无线通信技术
  11. python程序设计课后答案第二版_智慧职教APPPython程序设计(深圳信息职业技术学院)课后答案...
  12. @SuppressWarnings
  13. ffmpeg转码保留时间戳
  14. html文字logo
  15. 计算机管理组合用户,Windows2000用户和计算机帐户管理
  16. vmware设置静态ip地址
  17. 赵小楼《天道》《遥远的救世主》深度解析(39)芮小丹的恋爱态度:敞亮
  18. C#上位机开发连接三菱PLC
  19. 无人机感知与规避技术综述
  20. 统计各个年份出生的人数.如1996多少人,1997多少人

热门文章

  1. linux矢量图像编辑,Inkscape 1.0发布,开源矢量图形编辑器重要版本
  2. Js数组转字符串,字符串转数组
  3. nginx实现双向认证
  4. MySQL插入数据很慢优化思路
  5. 说服我男朋友辞职的第365天
  6. SQL日记4-datepart拆分时间
  7. 汇编语言实验十-《汇编语言-王爽老师》
  8. MongoDB下载安装配置(windows版本)
  9. 数字1-9依次排列填入符号+或-,结果为100
  10. 键入的打印机名不正确 或者指定的打印机没有连接到服务器上的解决办法