`
ye_haiqiang
  • 浏览: 87483 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

输入输出流

    博客分类:
  • J2SE
 
阅读更多

一、File类

java提供了java.io.File类对目录和文件进行操作。主要的操作方法包括:路径字符串构造方法、isDirectory、isFile、createNewFile、list、getName、delete。

1)构造方法:一般可以通过传递字符串形式的文件路径的方式来创建File对象,其中的File并不会检查该目录或文件是否已经存在。(所以均要IOException)

2)isDirectory()和isFile()方法:用于检查该File对象所代表的是目录还是普通文件;

3)createNewFile()方法:创建新文件,采用File对象所存储的路径和文件名进行创建;

4)list()方法:用于目录,得到目录下所有的文件名,类型为字符串数组;

5)getName()方法:得到文件名,不包含它的路径;

6)delete()方法:删除文件

7)mkdir():创建目录

例如:

import java.io.File;
import java.io.IOException;
public class FileDirTest 
{
	public static void main(String[] args) 
	{
		File dir=new File("F:/test");//创建dir目录对象
		//判断是否存在
		if(!dir.exists())
		{
			//创建目录
			dir.mkdir();
		}
		//分别在test目录底下创建a、b、c三个目录
		File file_a=new File(dir.getPath()+File.separator+"a");
		if(!file_a.exists())
		{
			file_a.mkdir();
		}
		File file_b=new File(dir.getPath()+File.separator+"b");
		if(!file_b.exists())
		{
			file_b.mkdir();
		}
		File file_c=new File(dir.getPath()+File.separator+"c");
		if(!file_c.exists())
		{
			file_c.mkdir();
		}
		//创建文件对象file
		File file=new File(dir.getPath()+File.separator+"a.txt");
		//判断它是否已经存在
		if(!file.exists())
		{
			try
			{
				file.createNewFile();//创建新文件a.txt
			}
			catch (IOException e)
			{
				System.out.println("创建文件失败");			
			}
		}
		
		if(dir.isDirectory())//判断它是否为目录
		{
			//调用list()方法获取它的所有文件
			String [] files=dir.list();
			//遍历文件
			for(String fileName:files)
			{
				//用目录和文件名生成File对象
				File f=new File(dir.getPath()+File.separator+fileName);
				//进行分类打印
				if(f.isFile())
				{
					System.out.println("file:"+f.getName());
				}
				else if(f.isDirectory())
				{
					System.out.println("dir:"+f.getName());
				}
			}
		}
	}
}

 

例子2:

如何复制一个文件?

 

步骤:

1)用被复制文件的路径创建一个InputSteam对象

2)用复制文件的新路径创建一个OutputSteam对象。

3)用read()方法循环把数据读出到一个byte数组中,直到读出数据的长度小于0.

4)用write()方法把byte数组中的字节写入输出流。

5)最后关闭输入流和输出流

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy 
{
	public static void main(String[] args) throws IOException
	{
		//生成输入文件的输入流对象
		FileInputStream fin=new FileInputStream("F:/test/a.txt");
		//生成输出文件的输出流对象
		FileOutputStream fout=new FileOutputStream("F:/test/c.txt");
		//定义一个用固暂存数据的byte数组
		byte [] buff=new byte[256];
		//每次读取数据的长度
		int len=0;
		//循环读取到buff中,如果文件到底,则读取数据的长度小于0
		while((len=fin.read(buff))>0)
		{
			//把数据一次写进输出文件中
			fout.write(buff,0,len);
		}
		//关闭输入流
		fin.close();
		//关闭输出流
		fout.close();
	}
}

 

 例题3:

如何使用随机存取文件RandomAccessFile类

InputStream 和OutputStream都只能单方面的读和写文件的内容,这里介绍下随机存取文件。步骤如下:

1)用length()方法获取文件的内容长度。

2)用seek()方法随机的到达任何需要存取数据的地方

3)调用read()方法获取当前位置的数据,用write()方法写入数据。

4)完成需要以后,关闭文件的打开close()

import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomFileTest 
{
	public static void main(String[] args) throws IOException
	{
		//创建随机读取文件对象
		RandomAccessFile file=new RandomAccessFile("f:/test/a.txt","rw");
		//遍历file的字节数据
		for(int i=0;i<file.length();i++)
		{
			//read()方法读取一个字节
			byte b=(byte)file.read();
			//转换为char型
			char c=(char)b;
			if(c=='a')
			{
				//把指针又恢复到之前的地方
				file.seek(i);
				//写入新的字符c
				file.write('c');
			}
			
		}
		file.close();
	}
}
//a===》c

 

二、流(Stream)

字节流的处理方式:字节流处理的是计算机最基本的单位byte,它可以处理任何数据格式的数据。主要的操作对象就是byte数组,通过read()和write()方法把byte数组中的数据写入或读出。(如复制文件)

 

字符流的处理方式:字符流是有字节流包装而来,它的输入和输出流类型包括StringReader和StringWriter、BufferedReader和BufferedWriter。字符流API的基本使用思路有以下步骤:

 

1)获取输入或输出流对象。可以从File得到,也可以从网络或者其他地方得到。

2)根据特定的字符格式创建InputStreamReader或InputStreamWriter对象

3)使用read()或者readLine()方法,得到数据。或使用writer或print()方法进行字符输出。

4)最后关闭reader或writer

 

import java.io.*;
public class ReaderTest 
{
	public static void main(String[] args) throws IOException 
	{
		//获取输入流
		InputStream in =new FileInputStream("f:/test/a.txt");
		//得到InputStreamReader对象
		InputStreamReader isr=new InputStreamReader(in,"GBK");
		//创建reader对象
		BufferedReader br=new BufferedReader(isr);
		//创建StringBuffer对象,临时保存字符内容
		StringBuffer sb=new StringBuffer();
		String str=null;
		//循环读取一行数据
		while((str=br.readLine())!=null)
		{
			//加入字符
			sb.append(str);
		}
		System.out.println("a.txt content :"+sb);
		//关闭流
		br.close();
	}
}

 

每天一点点希望对大家有利~~

 

 

 

分享到:
评论

相关推荐

    C++实验:输入输出流

    内容1:标准输入输出流重定向 (1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。 (2) 分别为类Time重载提取运算符(&gt;&gt;)和插入运算符(&gt;&gt;)。 a. 输入格式:14 30 15 b. 输出格式:14.5042 (3) ...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    JAVA输入输出流实验报告

    Java中的输入输出流是程序与外部数据交互的重要方式,它允许我们读取和写入数据到各种来源,如键盘、文件、网络等。在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验...

    java输入输出流与文件处理

    ### Java输入输出流与文件处理 #### 重要概念与基础知识 **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入...

    java输入输出流,电子课件

    Java输入输出流是Java编程中不可或缺的部分,它用于应用程序与外部设备之间进行数据交换,比如磁盘、网络、键盘和显示器。I/O流是Java中处理输入和输出的基础框架,它提供了一种抽象的方式来处理不同类型的输入源和...

    java中的标准输入输出流

    ### Java中的标准输入输出流知识点详解 #### 一、Java标准I/O介绍 Java提供了丰富的I/O处理机制,包括标准输入输出流、字节流、字符流等多种方式来处理数据的读取和写入。标准输入输出流是Java中非常基础且重要的...

    java输入输出流学生成绩管理

    在Java编程语言中,输入输出流(Input/Output Stream)是处理数据传输的核心部分,尤其在文件操作和网络通信中。对于"java输入输出流学生成绩管理"这个项目,我们可以推断它是一个使用Java I/O流实现的学生分数管理...

    基于对象输入输出流和数据结构的图书管理系统

    《基于对象输入输出流和数据结构的图书管理系统》是一个使用JAVA编程语言开发的DOS版本图书管理系统。这个系统充分利用了JAVA中的对象输入输出流技术以及高效的数据结构,以实现对图书信息的有效管理和操作。 首先...

    java输入输出流的两种写法

    Java 输入输出流是Java编程语言中处理数据传输的基础机制,主要负责程序与外部资源(如文件、网络连接等)之间的数据交互。Java 提供了多种类型的流,它们分为两大类:字节流(处理单个字节的数据)和字符流(处理...

    java输入输出流的代码示例

    Java输入输出流是Java编程语言中的核心概念,用于在程序之间、程序与文件系统、网络连接等不同数据源之间传输数据。在这个主题中,我们将深入探讨Java输入输出流的使用,通过具体的代码示例帮助你理解和掌握这个关键...

    Java 输入输出流 源码

    Java输入输出流是Java编程语言中的核心概念,用于在程序之间、程序与系统资源之间传输数据。这个主题包括了从磁盘、网络、内存到控制台等不同源和目标的数据读写操作。在这个Java作业中,你将深入理解并实践这一关键...

    java输入输出流的简单例子

    Java输入输出流是Java IO(Input/Output)体系的基础,它是Java处理数据传输的核心机制。在Java中,一切皆为对象,输入输出流也不例外。Java的输入输出流分为字节流和字符流两大类,每类又分别有输入流和输出流四种...

    C++输入输出流案例

    C++输入输出流案例 本文详细介绍了C++输入输出流的概念、类别、对象和常用操作,通过实例代码和图书管理系统的综合案例,巩固文件操作。 一、输入流 C++中输入流主要有三种:cin、getline和get。cin是 istream 类...

    JAVa输入输出流程序

    Java输入输出流(IO流)是Java编程语言中处理数据传输的核心部分,它允许程序进行数据的读取和写入操作。在Java中,一切皆为流,输入流用于读取数据,而输出流用于写入数据。这些流可以处理各种类型的数据,包括文本...

    文件管理和输入输出流.rar

    在IT行业中,文件管理和输入输出流是至关重要的概念,尤其对于程序设计而言。"文件管理和输入输出流"这个主题涵盖了Java、C语言、C++、C#以及JSP等多种编程语言中的相关技术,这些技术使得程序员能够有效地读取、...

    浅谈输入输出流

    ### 浅谈Java输入输出流 #### 一、引言 Java作为一种广泛应用的编程语言,在处理数据时提供了非常强大且灵活的输入输出功能。然而,Java的输入输出操作可能看起来较为复杂,因为开发者通常需要处理多种不同的对象...

    实验3 输入输出流的实验.doc

    Java 输入输出流实验 本实验主要介绍了 Java 中的输入输出流,包括 DataInputStream、DataOutputStream、PrintStream 等类的使用,以及对象的序列化和反序列化。通过实验,我们可以掌握流的概念分类、字符串常用...

    java输入输出流.ppt

    Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它主要用于程序与外部资源之间的数据传输。在Java中,I/O流的概念被用来抽象各种输入源和输出目标,包括键盘、显示器、文件、网络连接等。I/O流的设计遵循...

Global site tag (gtag.js) - Google Analytics