欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java文件输入输出流

程序员文章站 2024-03-16 22:52:34
...

1.前言

学习Java也有一段时间了,在开发自己的安卓应用时总是觉得力不从心,主要是Java基础不好(自学的时候不够用心 ),所以还要回来补习Java。下面是我学习Java输入输出流的一些笔记,希望能帮到初学Java的朋友。

2.正文

  1. 确定使用输入流还是输出流。以程序为中心,往程序输入的就使用输入流,程序往外输出就使用输出流。
  2. 流分为字节流和字符流。字节流什么文件都可以处理,字符流主要处理纯文本文件。字节流的输入流抽象类是InputStream,实现类是FileInputStream;字节流的输出流抽象类是OutputStream,实现类是FileOutPutStream。字符流的输入流抽象类是Reader,实现类是FileReader;字节流的输出流抽象类是Writer,实现类是FileWriter。
  3. 使用流的一般过程。
    1.与目标文件建立联系
    2.选择对应的流
    3.确定读取或者写入的块大小
    4.读取或者写入
    5.释放资源
  4. 下面是字节输入流读取文件的demo代码。
package demo03;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 *读取文件Demo
 */
public class Demo01 {
	public static void main(String[] args) {
		//与目标文件建立联系
		File file = new File("C:\\Users\\15321\\Desktop\\test.txt");
		//选择流 InputStream是字节输入流的抽象类
		InputStream is = null;
		try {
			 //FileInputStream是字节输入流的实现类
			 is = new FileInputStream(file);
			 //确定读取块的大小 相当于缓冲
			 byte[] b = new byte[1024];
			 //实际读取的大小
			 int len;
			 //读取
			 while((len = is.read(b)) != -1) {
				 //输出 字节数组转成字符串
				 System.out.println(new String(b, 0, len));
			 }
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//释放资源
			if(is != null) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
  1. 下面是字节输出流的demo代码。
package demo03;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 1. 写入文件的demo
 */
public class Demo02 {
	public static void main(String[] args) {
		//与目标文件建立联系
		File file = new File("C:\\Users\\15321\\Desktop\\test.txt");
		//选择流
		OutputStream os = null;
		try {
			 String str = "woyebuzhidaoa";
			 //true表示追加文件 false表示覆盖文件
			 os = new FileOutputStream(file, true);
			 //写入的字节数据
			 byte[] data = str.getBytes();
			 //写入
			 os.write(data, 0, data.length);
			 //刷新
			 os.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//释放资源
			if(os != null) {
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
  1. 字节流的读取、写入综合练习。demo代码如下。
package demo03;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 读取和写入的综合练习demo 把test.txt的文件内容拷入test1.txt
 */
public class Demo03 {
	public static void main(String[] args) {
		File src = new File("C:\\Users\\15321\\Desktop\\test.txt");
		File dst = new File("C:\\Users\\15321\\Desktop\\test1.txt");
		
		InputStream is = null;
		OutputStream os = null;
		
		try {
			is = new FileInputStream(src);
			os = new FileOutputStream(dst);
			
			byte[] b = new byte[1024];
			int len = 0;
			while((len = is.read(b)) != -1) {
				os.write(b, 0, len);
			}
			
			os.flush();
		} catch (FileNotFoundException e) {
			System.out.println("文件不存在!");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//一般先打开的后关闭
			if(os != null) {
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if(is != null) {
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

3.总结

  1. 如有错误恳请指正。
  2. 初学者一定要学好文件输入流和输出流,这样用起来才会轻松。
  3. 与君共勉
相关标签: Java基础