IO流的总结

原创 2012年03月21日 14:19:09


IO流主要包括以下内容:

(1).使用File类进行文件操作。

(2).使用字节流读写文件。

(3).使用字符流读写文件。

 

使用File类操作目录:

File类主要常量及方法 :

方法或常量

类型

描述

String separator

常量

文件路径分隔符

public File(String filename)

构造方法

创建File类对象并传入完整路径

public boolean createNewFile()

方法

创建新文件

public boolean delete()

方法

删除文件

public boolean exists()

方法

判断文件是否存在

public boolean isDirectory()

方法

判断给定的路径是否为目录

public long length()

方法

返回文件的大小

public String[] list()

方法

列出指定目录的全部内容,只列出名称

public File[] listFiles()

方法

列出指定目录的全部内容

public boolean mkdir()

方法

创建目录

public boolean renameTo(File dest)

方法

为已有的文件重命名

示例:

判断文件是否存在,不存在则创建,存在则删除

 

package com.soft.test;

import java.io.File;
import java.io.IOException;
/**
 * 使用File类操作目录
 * @Author: liuxinghui
 * @Date: Mar 21, 2012
 * @Version: 2.0
 * @Despcrition:
 */
public class Test1 {
public static void main(String[] args) {
	File f=new File("c:/1.txt");
	if(f.exists()){
		f.delete();
	}else{
		try {
			f.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	System.out.println("文件的名称"+f.getName());
	System.out.println("文件的路径"+f.getPath());
	System.out.println(f.canWrite()?"文件可写":"文件不可写");
	System.out.println(f.isDirectory()?"文件是目录":"文件不是目录");
	System.out.println("文件的长度:"+f.length());
}
}


列出指定目录下的文件:

package com.soft.test;

import java.io.File;

/**
 * 列出指定目录下的文件(File类只是针对文件进行操作,对文件内容操作须使用RandomAccessFile类)
 * @Author: liuxinghui
 * @Date: Mar 21, 2012
 * @Version: 2.0
 * @Despcrition:
 */
public class Test3 {
public static void main(String[] args) {
	File f=new File("d:");
	String[] str=f.list();
	for(int i=0;i<str.length;i++){
		System.out.println(str[i]);
	}
}
}


RandomAccessFile类读写文件

方法

类型

描述

public RandomAccessFile(File f,String mode)

构造方法

接收File类,并设置r为只读、w为只写、rw为读写模式

public RandomAccessFile(String name,String mode)

构造方法

输入固定的文件路径并设置模式

public int read(byte[] b)

方法

将内容读取到byte数组中

public final byte readByte()

方法

读取一个字节

public final int readInt()

方法

从文件中读取整型数据

public void seek(long pos)

方法

设置读指针的位置

public final void writeBytes(String s)

方法

将一个字符串写入文件中

public final void writeInt(int v)

方法

将一个整型数据写入文件

public int skipBytes(int n)

方法

指针跳过多少个字节

例:

package com.soft.test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * RandomAccessFile类写入数据
 * @Author: liuxinghui
 * @Date: Mar 21, 2012
 * @Version: 2.0
 * @Despcrition:
 */
public class Test4 {
public static void main(String[] args) {
	File f=new File("c:"+File.separator+"demo.txt");
	try {
		RandomAccessFile rdf=new RandomAccessFile(f,"rw");
		String name=null;
		int age=0;
		name="tome";
		age=18;//整数在内存中占四个字节大小
		try {
			rdf.writeBytes(name);
			rdf.writeInt(age);
			name="mike";
			age=90;
			rdf.writeBytes(name);
			rdf.writeInt(age);
			rdf.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}


字节流:InputPutStream和OutputStream

uInputStream:   程序可以从中连续读取字节的对象称为字节输入流
uInputStream 的主要方法

方法

描述

public void close()

关闭输入流

public abstract int read()

以数字的方式读取内容

public int read(byte[] b)

将内容读到byte数组中,同时返回读入的个数

  OutputStream:   程序可以向其中连续写入字节的对象称为字节输出流
uOutputStream 的主要方法

方法

描述

public void close()

关闭输出流

public abstract void write(int b)

在数据流中写入一个字节

public void write(byte[] b,int off,int len)

在数据流中写入一个指定范围的byte数组

public void write(byte[] b)

在数据流中写入一个byte数组

public void flush()

刷新缓冲区

InputStream和OutputStream是两个抽象类
使用子类FileInputStream和FileOutputStream分别读取和写入文件的内容
列:
package com.soft.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
 * FileInputStream和FileOutputStream 
 * @Author: liuxinghui
 * @Date: Mar 21, 2012
 * @Version: 2.0
 * @Despcrition:
 */
public class Test6 {
public static void main(String[] args) throws Exception {
	File f=new File("c:/demo.txt");//打开文件
	OutputStream os=new FileOutputStream(f);
	String str="hello word!";
	os.write(str.getBytes());
	
	InputStream is=new FileInputStream(f);
	byte[] b=new byte[1024];
	int len=is.read(b);
	System.out.println(new String(b,0,len));
}
}

BufferedInputStream和BufferedOutputStream可以增加内存缓冲区
BufferedInputStream构造方法

BufferedInputStream(InputStream in)

 BufferedInputStream(InputStream in,int size)

 第一种形式的构造方法创建带有32个字节缓冲区的缓冲流,第二种形式的构造方法按指定的大小来创建缓冲区

BufferedOutputStream构造方法

BufferedOutputStream(OutputStream in)

BufferedOutputStream(OutputStream in,int size)

 第一种形式的构造方法创建带有32个字节缓冲区的缓冲流,第二种形式的构造方法按指定的大小来创建缓冲区

package com.soft.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 文件的读写操作
 * @Author: liuxinghui
 * @Date: Mar 21, 2012
 * @Version: 2.0
 * @Despcrition:
 */
public class Test7 {
public static void main(String[] args) throws IOException {
	byte[] b=new byte[1];
	InputStream is=new FileInputStream("c:/demo.txt");
	OutputStream os=new FileOutputStream("c:/demo1.txt");
	BufferedInputStream bui=new BufferedInputStream(is);
	BufferedOutputStream buo=new BufferedOutputStream(os);
	while(bui.read(b)!=-1){
		buo.write(b);
	}
	buo.flush();//强制输出缓冲区的数据
	bui.close();
	buo.close();
}
}

字符流
Reade和Writer是两个抽象类,分别与InputStream和OutputStream对应
reader的主要方法:

方法

描述

public abstract void close()

关闭输入流

public int read()

读取单个字符

public int read(char[] c)

将内容读取到字符数组中,并返回读取的长度

 
nWriter主要方法

方法

描述

public abstract void close()

关闭输出流

public void write(String str)

输出字符串

public void write(char[] c)

输出字符数组

public abstract void flush()

强制清空缓存

File f = new File("d:/demo.doc");
Writer out = new FileWriter(f);
		
out.write("hello world");
out.close();
Reader reader = new FileReader(f);
char c[] = new char[1024];
int len = reader.read(c);//将内容读取到字符数组中
System.out.println(new String(c,0,len));
out.close();
reader.close();

InputStreamReader和OutputStreamWriter是字节流和字符流之间的转换类
 
InputStreamReader是将输入的字节流变为字符
OutputStreamWriter是将输出的字符流变为字节流
字符流转换字节流
File f = new File("d:/demo.txt");	
OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(f));
os.write("hello world");
os.close();
字节流转换字符流

File f = new File("d:/demo.txt");

//字节流变为字符流

InputStreamReader reader= new InputStreamReader(new FileInputStream(f)); 

char[] c = new char[1024];  

int len = reader.read(c);

System.out.println(new String(c,0,len));

reader.close();




BufferedReader和BufferedWriter是带缓冲区的Reader和Writer
BufferedReader主要方法

方法

类型

描述

public BufferedReader(Reader in)

构造方法

接收Reader类实例

public String readLine()

方法

从缓冲区中读取一行文本

public int read()

方法

读取单个字符

public int read(char[] c,int off,int len)

方法

读取字符数组的一部分

nBufferedWriter主要方法

方法

类型

描述

public BufferedWriter(Writer out)

构造方法

接收Writer类实例

public void newLine()

方法

写入一个行分隔符

public void write(int c)

方法

写入单个字符

public void write(char[] c,int off,int len)

方法

写入字符数组的一部分

public void write(String s,int off,int len)

方法

写入字符串的一部分

 File f = new File("d:/demo.txt");
FileWriter writer = new FileWriter(f);
BufferedWriter bufWriter = new BufferedWriter(writer);
bufWriter.write("hello world");
     
 bufWriter.close();
 writer.close();
     
  FileReader reader = new FileReader(f);
  BufferedReader bufReader = new BufferedReader(reader);
     
  System.out.println(bufReader.readLine());

PrintWriter是Writer的子类,其作用是将格式化对象打印到一个文本输出流
PrintWriter主要方法:print()、println()、write()
 PrintWriter pw = new PrintWriter("d:/test.txt");
 pw.println("hello world");
 pw.write("java");
 pw.flush();

 pw.close();

字节流与字符流区别

字节流

字符流

以字节为单位输入输出数据

以字符为单位输入输出数据

操作时不会用到缓冲区(内存)

操作时使用了缓冲区(内存)

字节流按照8位传输

字符流按照16位传输

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015年10月11日 12:35
  • 16151

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流。 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Bu...
  • u013309870
  • u013309870
  • 2016年08月03日 20:03
  • 1016

IO流总结(基础知识)

IO这章的知识在上面一篇博客也说过一点,主要要体会一下装饰者设计模式和适配器设计模式,这样更利于我们理解复杂的IO体系结构。今天就让我们看一看。不过在讲IO 之前,我们先把文件(File)的知识简单过...
  • u013263323
  • u013263323
  • 2015年05月26日 09:58
  • 990

Java中IO流学习总结

Java中IO流学习总结一.IO流中的结构 字符流:顾名思义,该流只能处理字符,但处理字符速度很快 字节流:可以处理所有以bit为单位储存的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如...
  • Yue_Chen
  • Yue_Chen
  • 2017年05月26日 18:00
  • 389

java中IO流的知识点总结

1.流的概念流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。2.IO流...
  • u011626964
  • u011626964
  • 2015年09月01日 10:39
  • 7274

最完整的Java IO流学习总结

一、 File类 1、 java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作) 2、 File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容...
  • SilenceOO
  • SilenceOO
  • 2016年03月28日 00:37
  • 611

【马士兵】笔记_Java IO流

有道云笔记 连接: http://note.youdao.com/share/?id=7a322ea0150fbc678da417d68f53c9f4&type=note ------...
  • na_simon2900086
  • na_simon2900086
  • 2016年11月15日 05:41
  • 364

io流面试题简单实现的一些方法

1.需求:将一个以空格分隔的单词文件转化为数组。 思想:文件读取装入char[]数组,用String构造方法将char[]转化为String字符串,再用String的split方法得到分割好的数组。 ...
  • yibi4700
  • yibi4700
  • 2017年08月14日 14:25
  • 174

java IO体系的学习总结

java IO体系的整理笔记1.Java Io流的概念,分类,类图。1.1 Java Io流的概念    java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同...
  • nightcurtis
  • nightcurtis
  • 2016年05月05日 16:31
  • 3704

Java IO示例代码

在较深入学习Java IO后,给出常用的字符流和字节流的示例代码。通过示例进一步了解和学习Java IO的整体架构和设计思想,并将其应用到实际开发中。 Java中I/O操作主要是指使用Java进行...
  • pistolove
  • pistolove
  • 2017年03月15日 06:52
  • 959
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IO流的总结
举报原因:
原因补充:

(最多只允许输入30个字)