Java SE 学习笔记12 IO流与文件读写

Java输入输出文件读写详解 Java输入输出文件读写详解;Java输入输出文件读写详解。 立即下载

文件读写

Java中通过流来读写文件,流是指一连串流动的字符,是以先进先出方式发送信息的通道。
在这里插入图片描述
输入/输出流与数据源:
在这里插入图片描述
Java流的分类:
在这里插入图片描述
输入输出流是相对于计算机内存来说的。
在这里插入图片描述

1、字节流与字符流的区别

字符流的底层就是字节流。而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容,而字节流读取单位为byte。byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等。基于B/S和C/S的文件传输都可以采用字节流的形式。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。

字节流就是按照字节来进行传输,字符流是按照字符来传输.最基本的是字节流,字符流可以说是对字节流的一个包装流,比如你知道了一个字符是8个字节,那么你让字节流一次传输8个字节,那不就相当于一次传输一个字符,也就是字符流了。
在这里插入图片描述


使用字节流不关闭执行:

package com.zy.demo2;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class StreamTest {
	// 通过字节流 写文件
    	public static void ByteWrite() {
        	File file = new File("d:\\test.txt");
        	try {
            		OutputStream outputStream = new FileOutputStream(file);
            		String textString = "Hello World!!!";
            		byte[] data = textString.getBytes();
            		outputStream.write(data);
            		//outputStream.close();
        	} catch (IOException e) {
           		 System.out.println("字节流写入文件出错。");
           	 	 e.printStackTrace();
           	 }
        }
        public static void main(String[] args) {
  		StreamTest.ByteWrite();
  	}
  }

结果:
在这里插入图片描述


程序运行后会发现文件中没有任何内容,这是因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。
在开发中是使用字节流好还是字符流好呢?
回答:使用字节流更好。所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节流使用较为广泛。
如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

2、使用FileInputStream读取文本文件

package com.zy.demo2;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class d {
	/**
  	 * 文件读取(一行一行读)
  	 */
  	 public static void readFile(){
  	File file=new File("D:/test.txt");
     	try {
       		InputStreamReader read = new InputStreamReader(new FileInputStream(file), "utf8");
       		BufferedReader bufferedReader = new BufferedReader(read);
       		String lineTxt = null;
       		//循环输出每一行内容
       		while ((lineTxt = bufferedReader.readLine()) != null) {
         	System.out.println(lineTxt);
       	}
       	read.close();
     } catch (Exception e) {
       		e.printStackTrace();
     	}
 }
 	public static void main(String[] args) {
  		d.readFile();
 	}
 }

结果:
在这里插入图片描述

3、File类

File 类的常用方法如下:

方法名称说明
boolean exists( )判断文件或目录是否存在
boolean isFile( )判断是否是文件
boolean isDirectory( )判断是否是目录
String getPath( )返回此对象表示的文件的相对路径名
String getAbsolutePath( )返回此对象表示的文件的绝对路径名
String getName( )返回此对象表示的文件或目录的名称
boolean delete( )删除此对象指定的文件或目录
boolean createNewFile( )创建名称的空文件,不创建文件夹
long length()返回文件的长度,单位为字节, 如果文件不存在,则返回 0L
Java中各种读写文件的方法 转载自:https://blog.csdn.net/gx17864373822/article/details/79992679 1、使用Scanner类解析文件。 (1)准备文件test.txt内容,内含字符、数字等文本信息; (2)使用Scanner类读取里面的字符信息和数字信息分别输出。 import java.io.*; import java.util.*; public c... 阅读详情

相关推荐

Java文件

Java读写文件IO分两大类,字节和字符,基类分别是字符:Reader和Writer字节:InputStream和OutPutStreamBufferedInputStream是带缓冲区的输入,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能;BufferedOutputStream是带缓冲区的输出,能够提高文件的写入效率。1.java文件操作1.1目录或文件的创建pa...

皮卡丘博客 4139

JAVA SE 文件IO

JAVA SE 文件IO

双吉堡工程专业的一名27届Javaer。 2075

0021_字节缓冲&字符

1.字节缓冲 1.1字节缓冲构造方法【应用】 字节缓冲介绍 lBufferOutputStream:该类实现缓冲输出。 通过设置这样的输出,应用程序可以向底层输出写入字节,而不必为写入的每个字节导致底层系统的调用 lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。 当从中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入中重新填充,一次很多字节 构造方法: |****|方法名|说明| |:----|:----|:-

weixin_45528849的博客 380

JAVA_SEIO

1、的分类 读取数据就是输入,写入数据就是输出。 按照处理的数据单位分为字节和字符 字节:操作的数据单元是8位的字节。InputStream、OutputStream作为抽象基类。 字符:操作的数据单元是字符。以Writer、Reader作为抽象基类。 注意: 字节可以处理所有数据文件,若处理的是纯文本数据,建议使用字符。 2、IO中的三类数据源 基于磁盘文件:FileInputStream、FileOutputSteam、FileReader、FileWriter 基于内存:Byte

gaofeng的博客 1949

JavaSE基础(12)——文件、递归、IO

flush() 这个函数是清空的意思,用于清空缓冲区的数据,进行的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用 close() 方法关闭读写,这时就可能造成数据丢失,为什么呢?2. 使用字符数组读取: read(Char[] b) ,每次读取b的长度个字符到数组中 返回读取到的有效字符个数,读取到末尾时,返回 -1。1. 读取字符: read 方法,每次可以读取一个字符的数据,返回为int类型,读取到文件末尾,返回 -1。任何数据都可以转化成字节数组。

qq_64751004的博客 1964

java中的IO(字节和字符)----读写文件数据

一、划分依据 1.按的方向分:输入(读)(硬盘👉内存)、输出(写)(内存👉硬盘) 2.按中的数据最小方向分: 字节(输入:InputStream 、 输出:OutputStream)、 字符(输入:Reader 、输出Writer) 二、具体实现类 上述四个都是抽象类,不能直接用,要使用对应的实现类去实现,多态形式。 1.对应的实现类:抽象类前面都加上File就是实现类形式了 旁白:主要学习会了字符类型的IO就好了。每次执行都会覆盖原有的数据,在开始创建对象地址后面加上一个true。

快乐学习 6224

Java SE IO总结

定义:数据在输入源(Input Source)和输出目标(Output Target)之间的动。类比:水管道(输入读数据,输出写数据)。java.io中子类有40个“”类,我们用以下表格来综合划分,当然这些你不用都去花时间一个一个看过来,我们只要熟悉掌握几类常用的“”就足够了,后续项目中如果用到陌生的“”,知道原理的话可以快速地去检索学习下就ok了。1.按操作数据单位不同分为:|--字节(8bit)二进制文件--||--字符(按字符)文本文件--|

2301_77041594的博客 721

Java SE--IO

如果我们想在程序中操作或者描述一个文件夹或文件,可以使用File类型File类型在java.io包下File可以新建,删除,移动,修改,重命名文件夹,也可以对文件或者文件夹的属性进行访问;但是不能对文件的内容进行访问(读和写);常用的构造器:需要注意的是,构造器只负责接收程序员传入的文件路径,并不会判断这个文件路径是否真实存在目录的分隔符可以使用 File.separator来获取;我们首先可以描述一个文件,然后使用file.exists();

m0_74074214的博客 951

Java SE 089 Java IO深入详解

(1)一个人只要自己不放弃自己,整个世界也不会放弃你. (2)天生我才必有大用 (3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟. (4)做难事必有所得 (5)精神乃真正的刀锋 (6)战胜对手有两次,第一次在内心中. (7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~ Java SE 089 Java IO深入详解 文章目录Java SE 089 Java IO深入详解1.的概念2.输入或输出的概念2.1输入输出的判断标准2.2的分类2.2.1从功能上分为.

青风百草 270

21天学会Java之(Java SE第十一篇):IO(输入输出)

I/O的概念 在Java API中,可以从其中读入一个字节序列的对象称作输入,而可以向其中写入一个字节序列的对象称作输出。这些字节序列的来源地和目的地可以是文件,而且通常都是文件,但是也可以是网络连接,甚至是内存块。抽象类InputStream和OutputStream构成了输入/输出(I/O)类层次结构的基础。 下图是IO常用的层次结构图(Java家族各种输入/输出类型超过60个,这里仅列出常用类,详情可以参考JDK API文档): 由图我们可以发现很多都是成对的出现的,以下是我们常用到的

小志Coding笔记 2万+

Java SE】11.JavaIO

本文详细介绍了JavaIO

Nian_kuian的博客 978

javaSE_day12 学习笔记 —— IO

javaSE_day12IO1. File类1.1 构造方法创建对象的三种格式1.2 文件夹的创建和删除1.3 创建文件1.4 常用方法2. IO: Input 、 Output2.1 分类2.2 核心方法2.3 操作的数组类型2.4 文件字节输入输出——FileInputStream和FileOutputStream2.5 对象输入输出——ObjectInputStream 和ObjectOutputStream2.6 文件字符输入输出——FileReader和FileWriter2.7 缓

LIKE_0217的博客 431

Java SE基础 六】JavaIO实现

今天来继续总结一下文件io,这块儿内容是研一的时候学的,大概时间是2016年1月13日到2016年1月14日学的,现在有些忘记,还好之前的笔记还在,重新梳理一下吧。希望能快速上手。首先io的意思就是输入输出嘛,主要包括内存,文件等地的输入输出。下边详细介绍。在介绍之前,先说一下java的编码吧。编码和编码格式编码编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成

MaoLin Tian's Blog 1101

Java SE12. IO

12. IO12.1 File类的使用12.2 IO原理及的分类12.3 节点文件-开发中使用少)12.4 缓冲(处理1-提高速度)12.5 转换(处理2-转换字符字节)12.6 标准输入、输出(处理3)12.7 打印12.8 数据12.9 对象12.10 随机存取文件12.11 NIO.2中Path、Paths、Files类的使用 12.1 File类的使用 构造器: File类对象可以是文件,也可以是目录 public File(String pathname)

coolcoolcool 223

JAVA SEJAVA中的IO

大家好呀,我是crisp制药呀💊,今天来给大家讲解JAVAIO的相关的知识,万字长文希望大家可以收藏起来慢慢看,作为初学者我也是写来方便日后的复习,制药和大家一起学习一起加油!😀下图是我自制的有关IO的思维导图,将各种分类梳理了一遍。代码示例: 2.2 路径分类 相对路径:相较于某个路径下,指明的路径。 绝对路径:包含盘符在内的文件文件目录的路径。 说明:windows和DOS系统默认使用 来表示UNIX和URL使用 来表示Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个..

crisp0530的博客 330

JAVA SE学习day_05: IO操作

一、IO 以程序为主体,input(输入)是读、获取、使用输入的过程,output(输出)是写、发送的过程。 JAVA IO 标准的输入输出 JAVA IO将读和写按照方向划分为: 输入:用于读取 输出:用于写出 区分方向的参照点是程序,从外界获取信息到程序中的方向是输入,反之是输出。 JAVA IO以标准化的方式对外界设备进行读写操作。使得我们读写外界设备的方式 基本是统一的。 ...

litter_m的博客 293

Java SE基础(十八)IO

本章讲述Java SEIO、字节、字符、序列化

虎鲸不是鱼 438

Java练习生的自我修养』java-se进阶⁴ • IO概览

带你速览IOIO体系+两个小案例。 ☕☕ Java进阶攻坚克难,持续更新,一网打尽IO、注解、多线程…等java-se进阶内容。

Keep coding! 621
上一篇: Java SE 学习笔记11 字符串
下一篇: Java Web 学习笔记01 HTML基本用法
Yeah_zy
博客等级 码龄7年 2粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值