首页 > 编程语言 >JAVA IO流学习1

JAVA IO流学习1

时间:2024-04-04 17:02:07浏览次数:27  
标签:输出 读取 JAVA 字节 System 学习 IO println out

目标:

File类:

File类是java.io包中很重要的一个类

File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等

File对象不能操作文件的具体数据,即不能对文件进行读和写的操作

File的构造方法:

File(String pathname)  -------指定文件(目录)名和路径创建文件对象

File类的常用方法:

package file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class FileDemo1 {
    public static void main(String[] args) throws IOException {
        /*
        一个File对象可以代表具体的文件或者目录 , 是对文件或者目录的抽象表示
         */
        File f1=new File("D:\\java测试专用\\file测试用例");//指明详细的路径和文件名,注意用用双斜线或者反斜杠
        //指明详细的路径和目录名,注意用双斜线
       f1.createNewFile();//该名称文件不存在时,在该路径下创造出文件  原子地创建一个由该抽象路径名命名的新的空文件。
        System.out.println(f1.exists());//判断文件是否存在
        System.out.println(f1.canRead());//判断文件是否可以读取
        System.out.println(f1.canWrite());//判断文件是否可以写入

        System.out.println(f1.getParent());//返回此抽象路径的父级路径,如果不存在则返回NULL
        System.out.println(f1.getName());//获取路径名称
        System.out.println(f1.isDirectory());//测试此路径名是否为目录
        System.out.println(f1.isFile());//判断是否为普通文件
        System.out.println(f1.isHidden());//是否为隐藏文件
        System.out.println(f1.lastModified());//返回最后修改时间
        System.out.println(f1.getPath());//将此抽象路径名转换为路径名字符串。
        System.out.println(new Date(1679652353967L));
        System.out.println(f1.length());//返回此抽象路径名代表的文件的长度
    }
}

输入及输出的概念:

输入:把电脑硬盘中的东西读到程序中叫做输入(input)

输出:进行数据的read操作,将程序中的内容写出到外部设备中叫做输出(output),进行数据的write操作。

字节流与字符流:

从数据流编码格式上划分为字节流和字符流

字节流常用类:

字节输入流:FileInputStream;

字节输出流:FileOutputStream

字符流常用类:

字符输入流:FileReader;

字符输出流:FileWriter

输入流与输出流:

流按照数据的传输方向分为输入流和输出流

输入流:往程序中传输数据叫做输入流

输出流:从程序中往外写数据叫做输出流

● InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。

● Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处理单元为1个字符。

字节流将读取到的字节数据,去指定的编码表中获取对应文字字符

输入输出节点字节流:

InputStream的基本方法:

close();       关闭流释放内存资源

read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾

read(byte[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

read(byte[ ] b,int off,int len);从索引off处开始读取len个字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

OutputStream的基本方法:

close();关闭流释放内存资源

flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存

writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位

write(byte[ ] b);将一个数组写入到输出流中

write(byte[ ] b,off,len);将一个数组从索引off处开始len个字节写入到输出流中

节点流与处理流:

根据封装类型不同,流又被分为:

节点流、处理流

节点流:如果流封装的是某种特定的数据源,如文件、字符数组、字符串等,则称之为节点流

处理流:如果流封装的是其它对象,则称之为处理流。处理流提供了缓冲功能,提高了读写效率,同时增加了一些新的方法

节点流中常用类:

字节输入流:FileInputStream

字节输出流:FileOutputStream

字符输入流:FileReader

字符输出流:FileWrite

处理流中常用类:

缓冲字节输入流:BufferedInputStream

缓冲字节输出流:BufferedOutputStream

缓冲字符输入流:BufferedReader

缓冲字符输出流:BufferedWriter

输入输出节点字符流:

Reader的基本方法:

close();       关闭

read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾

read(char[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

read(char[ ] b,int off,int len);从索引off处开始读取len个字节数据并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1

Writer的基本方法:

close();关闭流释放内存资源

flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存

writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位

write(char[ ] b);将一个字符类型数组的数据写入到输出流中

write(char[ ] b,off,len);将一个字符类型数组从索引off处开始len个字节的字符写入到输出流中

对象输入输出流:

package chardemo;

import java.io.*;
import java.util.Date;

public class ObjectDemo {
    /*
      对象输入输出流: 把Java中的对象输出到文件中, 从文件把对象输入到程序中
      为什么要把对象输出到文件中?
             new Student(“张er”,20);数据存储在对象中,对象是在内存中存储,一旦程序运行结束,对象就会销毁
             有时需要将对象的信息长久保存,就需要将对象输出到文件中,长久保存。  举例系统升级   关闭服务器时将对象保存起来,升级完毕,重新再把数据还原回来
             把对象输出到文件的过程也称为对象的序列化,
             再把对象从文件输入到程序的过程称为对象的反序列化,反序列时会生成一个新的对象,所以反序列化也是创建对象的一种方式
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
       // String s=new String("fsde");
        //Date date=new Date();
        Student student=new Student(66,"zz");
        //对象输出   对象的序列化

       // FileOutputStream out=new FileOutputStream("D:\\demo.txt");
     //   ObjectOutput output=new ObjectOutputStream(out);
               //output.writeObject(s);
               //output.writeObject(date);
      /*  output.writeObject(student);
               output.flush();
               output.close();
*/
        //对象输入   对象反序列化
        FileInputStream inputStream=new FileInputStream("D:\\demo.txt");
        ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
         //        String s=(String)objectInputStream.readObject();
                 Date date=(Date) objectInputStream.readObject();
        //System.out.println(s);
        System.out.println(date);
        Student student1=(Student)objectInputStream.readObject();
        System.out.println(student1);
        objectInputStream.close();
    }

}

标签:输出,读取,JAVA,字节,System,学习,IO,println,out
From: https://blog.csdn.net/2301_78490414/article/details/137206279

相关文章

  • Java:多线程-继承Thread类
    在Java中,通过继承Thread类是实现多线程的一种方式。这种方式允许你创建自己的线程类,并定义线程执行的具体内容。以下是关于继承Thread类的详细讲解:继承Thread类的步骤创建线程类:创建一个继承自Thread的子类。重写run方法:在子类中重写run方法,定义线程执行的任务。run方法是......
  • Java:多线程相关知识概念
    Java中的多线程是指在单个程序中并行执行多个线程(即执行路径或任务)的能力。多线程在Java中是一个核心概念,它允许应用程序更有效地利用CPU资源,同时还能进行并发操作。以下是Java中多线程相关的详细知识:线程的基本概念线程(Thread):是操作系统能够进行运算调度的最小单位。它......
  • Java解决跨域问题
    importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.CorsRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcCo......
  • 使用 Python 构建第一个 CNN 机器学习模型的完整指南
    在这篇博文中,我们将逐步介绍如何使用Python构建第一个卷积神经网络(CNN)机器学习模型。由于CNN能够捕获数据中的空间层次结构,因此被广泛用于图像识别和分类任务。第1步:导入必要的库首先,让我们导入构建CNN模型所需的库:importnumpyasnpimportmatplotlib.pyplo......
  • 基于深度学习的犬种识别系统详解(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的犬种识别技术,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像、视......
  • P3435 [POI2006] OKR-Periods of Words
    原题链接题解1.Q是S的前缀2.Q!=S3.S是QQ的前缀,且S可以等于QQ4.从S中挖掉Q后剩下的部分与Q(s)的前半部分重合,也就是公共前后缀5.要让Q尽可能长,就要让公共前后缀尽可能短(非零)细节请看代码解答一些疑惑:为什么不能直接求最短公共前后缀,而是要先求最大公共前后缀?code#include<b......
  • 基于深度学习的鸟类识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5的鸟类识别系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像、视频和实时摄像头......
  • visual studio Code安装后无法启动、点击图标没反应
    1.找到vscode安装目录2.选择code.exe文件,右键点击属性3.选择管理员身份运行,然后点击应用,重启程序。4.若仍然无法启动,点击运行兼容性疑难解答5.6.点击测试程序,若没反应点击下一步7.,若成功点击是,若没成功点击否8.任意选择你的问题,然后点击下一步,再次测试程序......
  • java计算机毕业设计(附源码)音乐播放平台(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着数字时代的到来,音乐播放平台已经成为了人们生活中不可或缺的一部分。这些平台通过互联网提供了大量的音乐资源,使得用户可以随时随地欣赏到自己喜欢的......
  • java计算机毕业设计(附源码)音乐播放器app(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今的数字化时代,音乐已经成为人们日常生活中不可或缺的一部分。随着智能手机和移动互联网的普及,音乐播放器app应运而生,为人们提供了随时随地欣赏音乐......