0
点赞
收藏
分享

微信扫一扫

Java IO中的FileReader 和 FileWriter读写文件,和创建多级文件夹

fbd4ffd0717b 2023-04-24 阅读 84


package pack.java.io;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;

import sun.misc.Resource;

public class CreateFileDemo {
	/**
	 * 测试主方法;
	 * @param args
	 */
	public static void main(String[] args) {
		//System.getProperty("user.dir")是取得当前项目的根目录;然后,在拼出文件所在的目录;
		String file=System.getProperty("user.dir")+"\\src"+File.separator+"\\myFile.txt";
		File writeFile=new File("C:\\iodemo\\File\\");
		System.out.println("获得父级目录:"+writeFile.getParent());
		
		//如果目录不存在,则创建目录;
		if(!writeFile.exists()){
			//mkdirs是创建多级目录,而mkdir是创建单级目录;
			writeFile.mkdirs();
		}
		FileReader fileReader  = null;
		FileWriter fileWrite  = null;
		try {
			//fileInputStream=new FileInputStream(file);
			//fileOutputStream = new FileOutputStream(new File(writeFile.getPath()+"\\writeFile.txt"));
			fileReader = new FileReader(file);
			int c=0;
			try {
				fileWrite = new FileWriter(writeFile.getPath()+"\\writeFile.txt");
				while ((c=fileReader.read())!=-1) {
					//输出到C:\\iodemo\\File\\test目录下的writeFile.txt文件中;
					fileWrite.write(c);
				}
				System.out.println("成功输出文件到:"+writeFile.getPath());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
				try {
					//以下操作是:关闭输入流和输出流;
					if(fileReader!=null){
						fileReader.close();
					}
					if(fileWrite!=null){
						fileWrite.close();
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
	
}

 

 

 FileInputStream 类
1 ) FileInputStream 类介绍:
以字节为单位的流处理。字节序列:二进制数据。与编码无关,不存在乱码问题。
FileInputStream 类的主要方法有:
Read(), read(byte[] b), read (byte[],int off,int len) ,available();

2 ) FileInputStream 类与 FileReader 类的区别:

两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,它们到底有何区别呢?
FileInputStream :以字节流方式读取;
FileReader :把文件转换为字符流读入;
InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
Reader类及其子类提供的字符流的读取char,inputStream及其子类提供字节流的读取byte,所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;

举报

相关推荐

0 条评论