博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO流/输入输出流(上)
阅读量:4160 次
发布时间:2019-05-26

本文共 4543 字,大约阅读时间需要 15 分钟。

文章目录

一.文件

  • 1.文件的概念:相关记录或放在一起的数据的集合
  • 2.Java程序访问文件方式-->java.io.File类
  • 3.创建文件对象: File file = new File(String path);
  • 4.File类常用的方法如下:
方法名 说明
boolean exists( ) 判断文件或目录是否存在
boolean isFile( ) 判断是否是文件
boolean isDirectory( ) 判断是否是目录
String getPath( ) 返回此对象表示的文件的相对路径名
String getAbsolutePath( ) 返回此对象表示的文件的绝对路径名
String getName( ) 返回此对象表示的文件或目录的名称
boolean delete( ) 删除此对象指定的文件或目录
boolean createNewFile( ) 创建名称的空文件,不创建文件夹
long length() 返回文件的长度,单位为字节, 如果文件不存在,则返回 0L
  • 5.练习:实现查看文件属性、创建和删除文件功能,具体代码如下:
package InputOutput;import java.io.File;import java.io.IOException;/** * @author sunyong * @date 2020/06/28 * @description * 创建文件 * 获取文件信息 * 删除文件 */public class FileDemo {
//创建文件 public static void create(File file){
if(!file.exists()){
try {
file.createNewFile(); System.out.println("文件已创建!"); } catch (IOException e) {
e.printStackTrace(); } } } //获取信息 public static void showInfo(File file){
if(file.exists()){
if(file.isFile()){
System.out.println("文件名称:"+file.getName()); System.out.println("相对路径:"+file.getPath()); System.out.println("绝对路径:"+file.getAbsolutePath()); System.out.println("字节数:"+file.length()); } if(file.isDirectory()){
System.out.println("这是目录!"); } }else {
System.out.println("不存在"); } } //删除文件 public static void delete(File file){
if(file.exists()){
file.delete(); System.out.println("文件已经被删除!"); } } public static void main(String[] args) {
File file = new File("test.txt"); FileDemo.create(file); FileDemo.showInfo(file); FileDemo.delete(file); }}
  • 6.效果如下:
    在这里插入图片描述

二.流

  • 1.什么是流?
  • 流是一组有序的数据序列,以先进先出方式发送信息的通道.
  • 2.Java流的分类
  • 1)按流向分类:
  • 输入流: InputStream和Reader作为基类
  • 输出流:OutputStream和Writer作为基类
  • 2)按处理数据单元分类:
  • 字节流:InputStream字节输入流和OutputStream字节输出流作为基类
  • 字符流:Reader字符输入流和Writer字符输出流作为基类

(一)字节输入流

  • 1.字节输入流常用方法说明如下:
方法 说明
int read( ) 从输入流按字节读,返回的是该字节的整数表示形式,读到流的末尾返回-1
int read(byte[] b) 从输入流读取若干字节,保存到数组b中,返回的是读取到的字节数,读到流的末尾返回-1
int read(byte[] b,int off,int len) 从输入流读取若干字节,保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len表示读取的字节数,返回的是实际读取到的字节数,读到流的末尾,返回-1
void close( ) 关闭输入流
int available() 可以从输入流中读取的字节数目
  • 2.子类FileInputStream常用的构造方法
  • 1)FileInputStream(File file)
  • 2)FileInputStream(String name)
  • 3.使用FileInputStream 读文本文件的步骤
说明 代码举例
1.导入相关类 import java.io.IOException; timport java.io.FileInputStream;
2.构造对象 FileInputStream fis= new FileInputStream(“test.txt”);
3.读取数据 fis.available(); fis.read();
4.关闭流 fis.close();

(二)字节输出流

  • 1.字节输出流常用方法说明如下:
方法 说明
void write(int c) 往输出流写入一个个字节
void write(byte[] buf) 往输出流写入一个字节数组
void write(byte[] b,int off,int len) 往输出流中写入一个字节数组,off代表开始从字节数组的off位置开始往输出流写,len代表往外写len长度的字节
void close() 关闭输出流
void flush() 强制把缓冲区的数据写到输出流中
  • 2.子类FileOutputStream常用的构造方法
  • 1)FileOutputStream(File file)
  • 2)FileOutputStream(String name)
  • 3)FileOutputStream(String name,boolean append)
  • 3.使用FileOutputStream 写文本文件的步骤
说明 代码举例
1.导入相关类 import java.io.IOException; import java.io.FileOutputStream;
2.构造对象 FileOutputStream fos= new FileOutputStream(“test.txt”);
3.写入数据 String str =“好好学习Java”;byte[] words = str.getBytes();fos.write(words, 0, words.length);
4.关闭流 fos.close();

观察输入流和输出流的步骤可发现其实步骤基本一样,只不过一个是读,一个是写

(三)练习:请用字节输入输出流复制一个文本文件

  • 思路分析: 复制其实就是把读写整合在一起,在读的时候将其写入在另一个文件即可完成复制,具体代码如下
package InputOutput;//1)导入相关类import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * @author sunyong * @date 2020/06/28 * @description * 字节输入输出流 * 实现文件复制(读写) */public class Copy {
public static void main(String[] args) {
//2)构造对象 FileInputStream fis=null; FileOutputStream fos=null; try {
fis = new FileInputStream("D:/我的青春谁做主.txt"); fos = new FileOutputStream("D:/sunyong/test.txt",true);//true表示追加,false表示覆盖 int length=fis.available(); byte[] words = new byte[length]; int data; //读完之后直接写入 while ((data=fis.read(words))!=-1){
fos.write(words,0,length); } System.out.println("文件复制完毕!"); } catch (IOException e) {
e.printStackTrace(); } //4)关闭流 finally {
try {
fis.close(); fos.close(); } catch (IOException e) {
e.printStackTrace(); } } }}

注:接IO流/输入输出流(下):

转载地址:http://odjxi.baihongyu.com/

你可能感兴趣的文章
【Python基础2】python字符串方法及格式设置
查看>>
【Python】random生成随机数
查看>>
【Python基础3】数字类型与常用运算
查看>>
【Python基础4】for循环、while循环与if分支
查看>>
【Python基础6】格式化字符串
查看>>
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>
在C++中,关键字explicit有什么作用
查看>>
C++中异常的处理方法以及使用了哪些关键字
查看>>
内存分配的形式有哪些? C++
查看>>
什么是内存泄露,如何避免内存泄露 C++
查看>>
栈和堆的空间大小 C++
查看>>
什么是缓冲区溢出 C++
查看>>