目录
3.6.2 子类FileOutputStream常用的构造方法
带着感动出发,每一天都会将行囊充实,无论是喜还是忧。我都会觉得那是自己阅历上的一个个字码。--加油!
一 .前言总结
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();
}
}