`
zcl_love_wx
  • 浏览: 311 次
  • 来自: 北京
社区版块
存档分类
最新评论

File类

    博客分类:
  • IO
阅读更多

1. IO流模型

本来是有一张图片描述的,因为该博客相对来说十分不完美,用户体验也一般般,只能写两句文字代替了:

输入流:由硬盘或是其他存储的数据向电脑内存发送产生的数据流。
输出流:由电脑内存向硬盘等其他地方发送数据产生的流。

所以IO流的里的输入输出是针对内存来说的。

InputStream和Reader的移动记录指针的方法:

void mark(int readAheadLimit): //在记录指针当前位置记下一个标记(mark)。
void reset(): //将此输入流的记录指针重新定位到上一次记录标记(mark)的位置。
long skip(long n): //记录指针向前移动n个字节/字符
boolean markSupported(): //判断此输入流是否支持mark()操作,即是否技持记录标记。

2.节点流: 可以向一个特定的设备(硬盘、网络)读/写数据的流。都以物理IO节点为构造器参数。

常见节点流: 
文 件: FileInputStream FileOutputStrean FileReader FileWriter 
数 组: ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 
字符串:StringReader StringWriter 
管 道:PipedInputStream PipedOutputStream PipedReader PipedWriter


3.处理流:对已经存在的流(节点流)进行连接或封装后再实现读写。 使用处理流的好处是,使用同一处理流,可访问不同节点流。以存在的流为构造器参数。关闭处理流时,被包装的节点流自动关闭。

常见处理流: 
缓冲流:BufferedInputStream、BufferedOutputStream,BufferedReader BufferedWriter 
转换流:InputStreamReader OutputStreamWriter 
数据流:DataInputStream DataOutputStream 
推回输入流:PushbackInputStream,PushbackReader 
其他:PrintStream


4.字节流: 操作的数据单元是8位字节,以InputStreamt、OutputStream作为基类。


5 字符流:操作的数据单元是16位的字符,以Reader、Writer为基类。


6.输入流的方法:

int read(): //读取单个字节或字符,返回读取的字节(字符)数据,该数据可直接转为int型。
 用read()方法读取GBK方式保存文件时,由于中文是两个字节组成的, 而read()每次只读了一个字节,所以会出现乱码问题。
 int read(byte[] b): //读取b.length个字节,存在字节数组b中。返回的是读取的字节个数,读到末尾返回-1。
 int read(char[] c): //与上面用法一样,区别只是上面的方法读的是字节,而它读的字符。

 

7 输出流的方法:

 void write(int c)://将字节/字符c输出到输出流中。
 void write(byte[]/char[] buff)://将字节/字符缓冲数组中的数据输出到输出流中。
  由于Writer类以字符为操作单位,所以它还有自己的方法:
 void write(String str)://将字符串直接输出到输出流中。
 void write(String str,int off ,int length)://将字符串str从off开始输出length个字符到输出流中。

 

8.与JDBC编程一样,程序打开的文件IO资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显示关闭。

Java7改写了所有IO资源,都实现了AutoCloseable接口,因此都可自动关闭资源的try语句来关闭IO流。如:

try(FileReader reader = new FileReader("test.java"););//即在try()里的IO流都会自动关闭。

 

9.转换流:将字节流转为字符流。InputStreamReader、OutputStreamReader,如:

InputStreamReader reader = new InputStreamReader(System.in);//标准输入(System.in)即键盘输入是InputStream的实例,所以是字节流。

 只有将字节流转为字符流的转换流,因为操作字符流更方便。


10.推回输入流:PushbackReader、PushbackInputStream

void unread(int c)://将字节/字符c推回到缓冲区里,从而允许缓冲区重复读c。
void unread(byte[] /char[] buff): //将buff数组推回到缓冲区里,从而允许缓冲区重复读取该数组。
void unread(byte[] /char[] ,int off,int len)://将字节/字符数组的数据从off开始推回len个到缓冲区里,从而可从缓冲区重复读。

 

推回输入流的三个read方法,与对应的InputStream 和 Reader的一样。

例:

PushbackReader back = new PushbackReader(new FileReader("test.java"),99);//创建缓冲区长度为99的 PushbackReader对象
char[] buff = new char[32];//创建存储读取数据的容器
String content = new String(buff,0,back.read(buff));//读一次数据存在buff里,并转为 String
back.unread(content.toCharArray());//将刚刚读的内容转为char数组后推回back缓冲区输入流中 
String content2 = new String(buff,0,back.read(buff));//再次从back的缓冲区里读取

 11.重定向标准输入输出:

System.out和System.in在默认情况下分别代表输出到显示器上(控制台)和键盘输入。 
System类提供了以下三个重定向的静态方法 :

static void setErr(PrintStream ps):// 重定错误输出流。
static void setOut(PrintStream ps): //System.out.println("内容");将把内容改输出到ps流里了。
static void setIn(InputStream in):// System.in将从in里获取内容了,而不是键盘输入。

 12.java.io包下还有以下可能会用到的字节点:

AudioInputStream、CiperInputSteam、DeflaterInputStream、ZipInputStream等具有访问音频文件、加密、压缩、解压功能的字节流。

分享到:
评论

相关推荐

    Unity3D FileInfo类和File类的使用

    "Unity3D FileInfo类和File类的使用" Unity3D FileInfo类和File类是 Unity3D 中的两个重要的文件操作类,它们都是System.IO 命名空间下的类,提供了文件操作的功能。下面我们将详细介绍这两个类的使用和区别。 ...

    java file类的方法

    ### Java File 类的方法详解 #### 一、简介 在Java编程语言中,`java.io.File`类是一个非常重要的类,它提供了对文件和目录路径名的抽象表示,并且支持一些基本的操作,例如创建、删除文件或目录等。本文将详细...

    java中File类的使用方法 File类的

    Java 中 File 类的使用方法 Java 中的 File 类是 java.io 包中的一员,它提供了对文件和文件夹的操作。下面是对 File 类的使用方法的详细讲解。 构造函数 File 类有多个构造函数,分别是: * `public File...

    java中File类总结

    ### Java中的File类详解 #### 一、概述 在Java编程语言中,`java.io.File`类是一个非常重要的基础类,用于封装一个抽象路径名,该路径名可以表示文件或目录。通过`File`类,我们可以执行一系列与文件和目录相关的...

    Android中File类的定义与常用方法.pdf

    1. **File类的定义** `File`类是`java.io`包的一部分,它是一个抽象的概念,用于封装文件和目录的路径名。通过`File`对象,开发者可以创建、删除、重命名文件,以及获取文件的相关信息。在Android中,`File`类的...

    java File类

    ### File类的构造函数 `File`类提供了多种构造函数,其中最常用的有`public File(String pathname)`,用于使用指定的路径创建一个`File`对象。例如,`File myFile = new File("C:\\test.txt");`创建了一个指向`C:\...

    file类应用代码

    file应用实例,列举了file类的常用方法,用代码实例操作!

    java开发之File类详细使用方法介绍

    Java中的File类是Java IO包(java.io)中的核心类,用于处理文件和文件系统相关的操作,如文件的创建、删除、重命名以及查询文件属性等。File类并不直接涉及文件内容的读写,而是专注于文件对象的元数据管理。 1. *...

    java中File类的使用方法

    java中File类的使用方法java中File类的使用方法java中File类的使用方法

    利用File类的方法,获得某已有文件的最后修改时间.docx

    我们可以使用`java.io.File`类提供的方法来实现这一功能。以下是对标题和描述中涉及的知识点的详细说明: ### 文件类(File)介绍 `File`类是Java I/O系统的基础,它用于表示文件和目录路径名。`File`对象可以代表...

    java file类操作实例

    在Java编程语言中,`File`类是用于处理文件和目录的基本工具,它不直接进行读写操作,但提供了很多方便的功能,如创建、删除、重命名文件以及获取文件属性等。以下是对Java `File`类操作实例的详细说明: 1. **创建...

    java中的File类

    Java中的`File`类是Java.io包中的核心类,它提供了在操作系统级别操作文件和目录的能力。`File`类主要用于文件和目录路径名的表示和操作,而不涉及文件的读写。下面我们将深入探讨`File`类的主要特性和常用方法。 1...

    Java SE程序 File类 ,文件的搜索

    Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,文件的搜索Java SE程序 File类 ,...

    java File类文件的使用

    1. **File类的构造器**: `File`类提供了多种构造器,允许我们用不同的方式来创建`File`对象。例如: - `File(String path)`:通过指定文件或目录的路径创建`File`对象。 - `File(String parent, String child)`...

    Java 语言File类的详解

    Java 语言中的File类是Java.io包下的一个核心类,它是用来操作文件和目录的工具类。File类提供了丰富的API,使得程序员可以方便地进行文件的创建、删除、重命名、属性读取等一系列操作。在Java中,一切皆对象,File...

    javaIO流File类的使用共3页.pdf.zip

    Java IO流中的File类是Java标准库中处理文件操作的核心类,它位于`java.io`包下。File类主要用于文件和目录的创建、删除、重命名等操作,以及获取文件的相关信息,如路径、大小、最后修改时间等。在Java程序中,File...

    ini-File-Access-class.zip_C++ FILE类_c 文件操作类_ini

    1. **C++中的FILE类**:FILE类是C标准库的一部分,定义在`<cstdio>`头文件中。它提供了基本的文件I/O操作,如`fopen`、`fclose`、`fread`、`fwrite`等。尽管FILE类功能强大,但其使用相对复杂,需要手动管理内存和...

    File类的使用

    ### File类在C#中的使用详解 #### 一、引言 在软件开发过程中,文件操作是一项非常基础且重要的功能。对于.NET Framework及其主要编程语言C#而言,`System.IO`命名空间提供了丰富的API用于处理文件相关的任务。其中...

Global site tag (gtag.js) - Google Analytics