`

java中IO操作

    博客分类:
  • J2SE
阅读更多

输入输出流

在Java中,把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类 InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。

所以java引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。

 

Java.io包简介

JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。

 

InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有输入数据流都具有的共通特性。

java.io.InputStream的方法如下:

public abstract read()throws IOException

读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的输入流类需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。

public int read(byte[] b)throws IOException

把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。

public abstract int read(byte[] b,int off,int len)throws IOException

把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。

public long skip(long n)throws IOException

略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。

public int available()throws IOException

read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写

/*

* Created on 2005-3-10

* To change the template for this generated file go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

package mytestfiles;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

/**

* @author zhangqinglin

* To change the template for this generated type comment go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

public class Files

{

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

{

Files f = new Files();

// System.out.println(f.readFile("f:\\LinkFile.java"));

// f.readAllFile("f:\\","LinkFile.java");

// f.readLineFile("f:\\","LinkFile.java");

// System.out.println(f.fileIsNull("f:\\","122.txt"));

// f.readFolderByFile("F:\\PDF");

// System.out.println(f.createAndDeleteFolder("ss","f:\\"));

// System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat"));

String[] ss = new String[50];

for(int i=0;i<ss.length;i++)

{

ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;

}

f.writeFile("f:\\ss\\","TestFile.txt",ss);

}

/**

* 文件的写入

* @param filePath(文件路径)

* @param fileName(文件名)

* @param args[]

* @throws IOException

*/

public void writeFile(String filePath,String fileName,String[] args) throws IOException

{

FileWriter fw = new FileWriter(filePath+fileName);

PrintWriter out=new PrintWriter(fw);

for(int i=0;i<args.length;i++)

{

out.write(args[i]);

out.println();

out.flush();

}

fw.close();

out.close();

}

/**

* 文件的写入

* @param filePath(文件路径)

* @param fileName(文件名)

* @param args

* @throws IOException

*/

public void writeFile(String filePath,String fileName,String args) throws IOException

{

FileWriter fw = new FileWriter(filePath+fileName);

fw.write(args);

fw.close();

}

/**

* 创建与删除文件

* @param filePath

* @param fileName

* @return 创建成功返回true

* @throws IOException

*/

public boolean createAndDeleteFile(String filePath,String fileName) throws IOException

{

boolean result = false;

File file = new File(filePath,fileName);

if(file.exists())

{

file.delete();

result = true;

System.out.println("文件已经删除!");

}

else

{

file.createNewFile();

result = true;

System.out.println("文件已经创建!");

}

return result;

}

/**

* 创建和删除目录

* @param folderName

* @param filePath

* @return 删除成功返回true

*/

public boolean createAndDeleteFolder(String folderName,String filePath)

{

boolean result = false;

try

{

File file = new File(filePath+folderName);

if(file.exists())

{

file.delete();

System.out.println("目录已经存在,已删除!");

result = true;

}

else

{

file.mkdir();

System.out.println("目录不存在,已经建立!");

result = true;

}

}

catch(Exception ex)

{

result = false;

System.out.println("CreateAndDeleteFolder is error:"+ex);

}

return result;

}

/**

* 输出目录中的所有文件及目录名字

* @param filePath

*/

public void readFolderByFile(String filePath)

{

File file = new File(filePath);

File[] tempFile = file.listFiles();

for(int i = 0;i<tempFile.length;i++)

{

if(tempFile[i].isFile())

{

System.out.println("File : "+tempFile[i].getName());

}

if(tempFile[i].isDirectory())

{

System.out.println("Directory : "+tempFile[i].getName());

}

}

}

/**

* 检查文件中是否为一个空

* @param filePath

* @param fileName

* @return 为空返回true

* @throws IOException

*/

public boolean fileIsNull(String filePath,String fileName) throws IOException

{

boolean result = false;

FileReader fr = new FileReader(filePath+fileName);

if(fr.read() == -1)

{

result = true;

System.out.println(fileName+" 文件中没有数据!");

}

else

{

System.out.println(fileName+" 文件中有数据!");

}

fr.close();

return result;

}

/**

* 读取文件中的所有内容

* @param filePath

* @param fileName

* @throws IOException

*/

public void readAllFile(String filePath,String fileName) throws IOException

{

FileReader fr = new FileReader(filePath+fileName);

int count = fr.read();

while(count != -1)

{

System.out.print((char)count);

count = fr.read();

if(count == 13)

{

fr.skip(1);

}

}

fr.close();

}

/**

* 一行一行的读取文件中的数据

* @param filePath

* @param fileName

* @throws IOException

*/

public void readLineFile(String filePath,String fileName) throws IOException

{

FileReader fr = new FileReader(filePath+fileName);

BufferedReader br = new BufferedReader(fr);

String line = br.readLine();

while(line != null)

{

System.out.println(line);

line = br.readLine();

}

br.close();

fr.close();

}

}

分享到:
评论

相关推荐

    java的IO操作常规

    在Java的IO操作中,可能会遇到各种异常,主要是IOException。在代码示例中,无论读写操作,都使用try-catch块来捕获并处理可能发生的异常,确保程序能够优雅地处理错误情况。 7. 使用RandomAccessFile进行随机文件...

    java的io操作

    Java的IO操作是Java编程中不可或缺的一部分,它允许程序与外部存储设备进行交互,如读取文件、写入文件、创建文件夹等。在Java中,`java.io`包提供了大量的类和接口来支持这些功能。 首先,我们来看如何创建一个新...

    java的各种io操作

    Java的IO操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,包括读取文件、写入文件、复制文件、创建目录等。在Java中,IO操作主要依赖于`java.io`包中的类和接口。 1. **新建目录**: 在Java中,我们...

    java_IO操作

    以下是对标题和描述中涉及的Java IO操作知识点的详细说明: 1. **读取文件内容**: - **按字节读取**:使用`FileInputStream`类,通过`read()`方法逐个读取字节。适用于二进制文件,如图片、音频或视频。 - **按...

    java的io操作源代码

    Java的IO操作是Java编程中的基础且重要的一部分,它提供了对输入输出流的处理,使得程序可以与外部设备(如硬盘、键盘、显示器)进行数据交互。本代码库包含了Java进行基本IO操作的源代码,涵盖了文件的复制、删除、...

    Java-Io流,练习

    为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...

    javaIO操作简单例子

    下面是一个简单的Java IO操作示例,展示如何使用InputStream和FileOutputStream进行文件的复制: ```java import java.io.*; public class SimpleIOTest { public static void main(String[] args) { try { ...

    提高Java IO操作的性能

    提高Java IO操作的性能 虽然抱怨Java程序性能不佳的呼声由来已久,但实际上,如果开发者在整个开发周期内都能够关注性能问题,Java程序完全可以和C/C++程序一样快。本文分析了Java IO应用中一些常见的性能问题。

    javaIo操作的基础代码

    Java IO操作是Java编程中的重要组成部分,主要用于处理输入和输出数据。在Java中,IO操作涉及到文件、字节流、字符流以及管道流等多个概念。下面将详细解释这些知识点。 首先,我们来看“文件类”。在Java中,`java...

    java.io.Reader 和 java.io.InputStream 的区别

    在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io.InputStream`是Java标准库中处理输入数据的核心类,它们分别...

    java中的io流详解

    Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来被 Java 语言所采用。 ...

    java_io详解

    在Java中,IO操作主要通过`java.io`包来实现,这个包包含了用于文件读写、标准设备输出等操作的一系列类和接口。Java IO的主要特点是基于流的概念来进行数据的输入和输出。 #### 2. Java IO模型 Java的IO模型采用...

    Java中文件IO流.pdf

    Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大...

    JAVA基本IO操作.mp4

    JAVA基本IO操作.mp4

    java中的IO流操作大全

    在Java中,IO流操作是用于处理输入与输出的抽象机制,它提供了在不同的数据源和目标之间传输数据的手段。流的概念最早起源于UNIX系统中的管道概念,是一个连续的数据流,可以理解为水流,从源端流向目的端。 一、流...

    Java_IO流详解

    Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常基础的部分,在面试当中经常出现。对于初学者而言,IO 部分是容易忽略的内容,求职者一定要掌握该...

Global site tag (gtag.js) - Google Analytics