java io流 关键字_Java IO流篇

本文介绍了Java中的IO流,包括按流向和数据单元的分类,如OutputStream和Reader。重点讨论了File类的使用,如创建、删除文件及获取属性的方法。并展示了如何使用FileInputStream和FileOutputStream进行字节流读写文件,包括基本读取、循环读取和缓冲读取的示例代码。
摘要由CSDN通过智能技术生成

2a80b15b855ea5a5539818975e92d943.png什么是IO流

思考问题

如何读写文件?

解决--通过流读写文件

流是指一连串流动的字符,以先进先出传输信息的通道。

Java操控硬盘上的文件,通过IO流来实现

02a303dffaf0737e132afc4784c45f8e.png

bb3b4d4af9ea6a793d5ccb4abdb8414b.png

d53c20bcf1c3154cd9e7acd025484f5d.png

2a80b15b855ea5a5539818975e92d943.pngJava流的分类

按流向区分 ---输出流 OutputStream 和 Writer 作为基类

---输入流 InputStream 和 Reader 作为基类

输入输出流是相对于计算机内存来说的

按处理数据单元划分 ---字节流

----字节输入流InputStream和字节输出流OutputStream

---字符流

----字符输入流Reander和字符输出流Writer

字节流是8位通用字节流,字符流是16位Unicode字符流

2a80b15b855ea5a5539818975e92d943.pngFile构造器

1、什么是文件?

文件是认为是相关记录或放在一起的数据的集合

2、文件一般存储在哪里?

计算机硬盘

3、JAVA程序如何访问文件属性?

java api:java.io.File类

920fbc8a318bebb0ea5f42c6fbb17e12.png

public class test01 {

public static void main(String[] args) throws IOException {

//File f1=new File("D://111");

//f1.mkdir(); //创建文件夹

File f2=new File("D://111//a.txt");

f2.createNewFile(); //创建文件,前提是111文件夹存在

}

}

2a80b15b855ea5a5539818975e92d943.pngFile类常用方法

boolean  exists()  判斷文件或目錄是否存在

boolean   isFile()  判斷是否是文件

Boolean    isDirectory()   判斷是否是目錄

String   getPanth()  返回此對象表示的文件的相對路徑

String    getAbsolutePath()  返回此對象表示的文件的絕對路徑

String     getName()  返回此對象表示的文件或目錄的名稱

boolean    delete()  刪除此對象指定的文件或目錄

boolean     createNewFile()  創建名稱的文件,不創建文件夾

long    length()  返回文件的長度,單位為字節,如果文件不存在,則返回0L

2a80b15b855ea5a5539818975e92d943.png字節流

用FileInputStream和FileOutputStream來讀取文本

import java.io.*;

//读取文件数据

/*

* 第一步:先找到要读取的文件 File对象

* 第二步:读取文件 读出来的数据应该是二进制,要使数据到你的程序里来,首先要建立一个传输数据的通道 搭建数据的输入通道

*/

public class test01 {

public static void main(String[] args) throws IOException {

readTest();

readTest1();

readTest2();

readTest3();

}

public static void readTest() throws IOException{

//第一步

File file=new File("D:\\test\\test.txt");

//第二步,建立数据输入通道

FileInputStream input=new FileInputStream(file);

//读取文件中一个字符数据,并返回输出

int connet=input.read();

System.out.println(connet);

//关闭流

input.close();

}

//使用循环读取数据

public static void readTest1() throws IOException{

int connet=0;

File file=new File("D:\\test\\test.txt");

FileInputStream input=new FileInputStream(file);

while((connet=input.read())!=-1){

System.out.println((char)connet);

}

input.close();

}

//使用缓冲读取数据 缺点:无法读取完整的一个文件

public static void readTest2() throws IOException{

File file=new File("D:\\test\\test.txt");

FileInputStream input=new FileInputStream(file);

//建立缓冲字节数组,读取文件数据

byte[] buf=new byte[3];//相当于超市里的购物车

int length=input.read(buf);//数据已经存储到了字节数组

//因为数据是存储到字节数组中,而这里的read方法的返回值是表示本次读取的几个字节数据到字节数组中

//上一句的作用就是读文件中数据存到字节数组中去

//使用字节数组构建字符串

System.out.println(length);

String contnet=new String(buf);

System.out.println("内容"+contnet);

input.close();

}

//使用缓冲数组配合循环一起读取

public static void readTest3() throws IOException{

File file=new File("D:\\test\\test.txt");

FileInputStream input=new FileInputStream(file);

int length=0;//保存每次读取到的字节个数

byte[] buf=new byte[1024];

//byte[] buf=new byte[1024*3];

//缓冲数组一般是1024的倍数,因为是计算机的处理单位,原则上缓冲数组越大,效率越高

while((length=input.read(buf))!=-1){

System.out.println(new String(buf,0,length));

}

input.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值