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