- 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则按字节流的方式读取文件;