Java IO流【输入和输出】

 目录

一 .前言总结

二.形式

 2.1File类访问文件属性  

2.2 代码展示:

2.3 代码的删除 创建

三.IO流 

3.1 通过流来读写文件

3.2 流是一组有序的数据序列

3.3 以先进先出方式发送信息的通道

3.4 Java流的分类

3.5  FileInputStream

3.6  使用FileInputStream 读文本文件

3.6.1 OutputStream类常用方法

3.6.2 子类FileOutputStream常用的构造方法

3.7 使用FileOutputStream 写文本文件

四. Reader类

4.1 FileReader类

 4.2 使用FileReader读取文件

 4.3 BufferedReader类

4.4 使用 BufferedReader读文本文件

 五 .Write

5.1 FileWriter类

5.2 使用FileWriter写文件

 5.3 BufferedWriter类 

 5.4  使用 BufferedWriter写文件

       带着感动出发,每一天都会将行囊充实,无论是喜还是忧。我都会觉得那是自己阅历上的一个个字码。--加油!


一 .前言总结

        1    File类用于访问文件或目录的属性。

        2、 流是指一连串流动的字符,是以先进先出的方式发送信息的通道。程序和数据源之间是通过流关联的。

        3、 流可以分为输入流和输出流,也可以分为字节流和字符流。

        4、 FileInputStream类和FileOutputStream类以字节流的方式读写文本文件。

        5、 BufferedReader类和BufferedWrite类以字符流的方式读写文本文件,而且效率更高。

二.形式

 2.1File类访问文件属性  

2.2 代码展示:

package cn.demo01;

import java.io.File;

public class Filedemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	File file1 = new File("D:test");
		
		//如果file1指向的目录不存在,就创建目录,如果目录存在,就删除这个目录---->exists是否存在
		if(file1.exists()){
			file1.delete();
			System.out.println("目录删除成功");
		}else{
			// boolean mkdir() 创建此抽象路径名指定的目录。只有在父文件存在   创建
			file1.mkdir();
			System.out.println("目录创建成功");
		}
		
		File file2 = new File("D:/a/b/c/d");
		//boolean mkdirs()  创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 
		boolean result =file2.mkdirs();
		System.out.println("file2对象指向的目录创建成功:"+result);
	}

}

2.3 代码的删除 创建

public class Filedemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	File file1 = new File("D:test");
		
		//如果file1指向的目录不存在,就创建目录,如果目录存在,就删除这个目录---->exists是否存在
		if(file1.exists()){
			file1.delete();
			System.out.println("目录删除成功");
		}else{
			// boolean mkdir() 创建此抽象路径名指定的目录。只有在父文件存在   创建
			file1.mkdir();
			System.out.println("目录创建成功");
		}
		
		File file2 = new File("D:/a/b/c/d");
		//boolean mkdirs()  创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 
		boolean result =file2.mkdirs();
		System.out.println("file2对象指向的目录创建成功:"+result);
	}

}

三.IO流 

3.1 通过流来读写文件

3.2 流是一组有序的数据序列

3.3 以先进先出方式发送信息的通道

3.4 Java流的分类

3.5  FileInputStream

3.6  使用FileInputStream 读文本文件

3.6.1 OutputStream类常用方法

void write(int c)

void write(byte[] buf)

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

void close() void flush():强制把缓冲区的数据写到输出流中

3.6.2 子类FileOutputStream常用的构造方法

FileOutputStream (File file)

FileOutputStream(String name)    

FileOutputStream(String name,boolean append)

package cn.demo02;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamAndFileOutputStream01 {

	/**
	 * @param args
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) throws FileNotFoundException {
		FileInputStream fis = null;
		FileOutputStream fos = null;

		fis = new FileInputStream("D:/a.txt");
		fos = new FileOutputStream("D:/copy.txt");

		int num;
		try {
			while ((num = fis.read()) != -1) {
				try {
					fos.write(num);

				} catch (IOException e) {

					e.printStackTrace();
				}
			}
			System.out.println("完成");
		} catch (IOException e) {

			e.printStackTrace();
		}finally{
			if(fos!=null){
				try {
					fos.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			}
			if(fis!=null){
				try {
					fis.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			}
		}

	}

}

3.7 使用FileOutputStream 写文本文件

public static void main(String[] args) {
	//创建一个File类对象,指向某个文件
		File file = new File("D:/a.txt");
		//创建FileInputStream类对象,读取指定文件内的数据
		FileInputStream fis  =null;
		try {
			fis  = new FileInputStream(file);
			//开始读取数据
//			int num1=fis.read();
//			System.out.println((char)num1);
//			
//			int num2=fis.read();
//			System.out.println((char)num2);
//			
//			int num3=fis.read();
//			System.out.println((char)num3);
			
			//下面这种写法会出现隔一个读一个数据的问题
//			while(fis.read()!=-1){
//				int num =fis.read();
//				System.out.println((char)num);
//			}
			
			int num;
			StringBuffer sb = new StringBuffer();
			while((num=fis.read())!=-1){
//				System.out.print((char)num);
				sb.append((char)num);
			}
			
			System.out.println("读取到的数据是:"+sb);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//不管前面有没有读取到数据,流最终是要关闭
			if(fis!=null){
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		
		
	}

四. Reader类

Reader类常用方法

        int read( )

        int read(char[] c) read(char[] c,)

        int off,int len) void close( )

子类InputStreamReader常用的构造方法

        InputStreamReader(InputStream in)

        InputStreamReader(InputStream in,String charsetName)

4.1 FileReader类

FileReader类是InputStreamReader的子类

         FileReader(File file)

        FileReader(String name)

该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型         System.out.println(System.getProperty("file.encoding"));  获得本地平台的字符编码类型

 4.2 使用FileReader读取文件

 4.3 BufferedReader类


BufferedReader常用的构造方法

        BufferedReader(Reader in)

子类BufferedReader特有的方法

         readLine()

4.4 使用 BufferedReader读文本文件

 五 .Write

Writer类常用方法

        write(String str)

         write(String str,int off,int len)

         void close() void flush()

子类OutputStreamWriter常用的构造方法

        OutputStreamWriter(OutputStream out)

         OutputStreamWriter(OutputStream out,String charsetName)

5.1 FileWriter类

FileWriter类是OutputStreamWriter的子类

         FileWriter (File file)

         FileWriter (String name)

该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型

5.2 使用FileWriter写文件

 5.3 BufferedWriter类 

 5.4  使用 BufferedWriter写文件

package cn.bdqn.demo05;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;

public class BufferedReaderDemo01 {

	public static void main(String[] args) {
		InputStream is=null;
		Reader reader = null;
		BufferedReader br =null;
		try {
			is = new FileInputStream("F:/b.txt");
			reader = new InputStreamReader(is, "UTF-8");
			br = new BufferedReader(reader);
			//读取数据
			String str;
			while((str=br.readLine())!=null){
				System.out.println(str);
			}
			System.out.println("文件读取完毕");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
		try {
			br.close();
			reader.close();
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}	
		}
		
		

       带着感动出发,每一天都会将行囊充实,无论是喜还是忧。我都会觉得那是自己阅历上的一个个字码。--加油!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值