1.I/O:input/output
1.1.java.io.File
表示:文件或者文件夹(目录)
File f=new File("文件路径")
注意:相对路径:非web项目的相对路径都是以项目名为起点(src/a.txt)(建议使用)
绝对路径:d:/bin/a.txt(以盘符开头的)(不可取)
2.文件常见方法
boolean flag=f.exists(); //文件是否存在
flag=f.isFile(); //是否是文件
flag=f.isDirectory(); //是否是目录
str=f.getPath(); //获得文件的相对路径
str=f.getAbsolutePath(); //获得文件的绝对路径
str=f.getName(); //获得文件名
flag=f.delete(); //删除文件
flag=f.createNewFile(); //创建文件
long=f.length(); //返回文件长度
注意:File不能操作文件内容
3.InputStream/OutputStream
文件:FileInputStream/FileOutputStream
3.1 FileInputStream(输入流)
数据从文件到java代码中。
int read(); //读取一个字节
int read(byte[]); //读取一串字节
long avaliable; //文件长度
3.2 FileInputStream(字节文件输入流)
new FileInputStream(File);
new FileInputStream("文件路径+文件名");
3.3 FileOutputStream(输出流)
数据从java代码中,写到文件或者其他介质中。
void write(字节); //写入一个字节
void write(byte[]); //写入字节数组
3.4 FileOutputStream
new FileOutputStream(File);
new FileOutputStream("文件路径+文件名");
new FileOutputStream("文件路径+文件名",true);
注意:a.boolean:表示是否向文件末尾追加,如果是true,表示追加,false表示不追加(也就是覆盖),默认值为false
b.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件。
4.Reader/Writer(字符流)
//能够用文本编辑器打开的文件,不乱码就是字符文件
//能够用文本编辑器打开乱码的,就是字节文件
4.1 FileReader
int b=fr.read(); //读取一个字符
int length=fr.read(char[]); //读取字符数组
4.2 FileWriter
fw.write(char); //写一个字符
fw.write(char[]); //写字符数组
4.3BufferedReader(字符输入缓冲流)
BufferedReader br=new BufferedReader(new FileReader("文件路径"));
String str=br.readLine(); //读取一行字符
4.4BufferedWriter(字符输出缓冲流)
BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径"));
bw.write(字符串);
运行结果:
1 package Day19; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 9 public class TestBuffer { 10 public static void main(String[] args) throws Exception { 11 buReader(); 12 buWriter(); 13 14 } 15 16 private static void buWriter() throws Exception { 17 BufferedWriter bw=new BufferedWriter(new FileWriter("src/a.txt")); 18 bw.write("我是中国人"); 19 //刷新缓存 20 bw.flush(); 21 //默认执行flush(),关闭管道 22 bw.close(); 23 } 24 25 private static void buReader() throws Exception { 26 BufferedReader br=new BufferedReader(new FileReader("src/d.txt")); 27 //读取一行记录 28 // String str=br.readLine(); 29 // str=br.readLine(); 30 // System.out.println(str); 31 32 String str; 33 while((str=br.readLine())!=null){ 34 System.out.println(str); 35 } 36 } 37 }
5.DataInputStream/DataOutputStream
6.小结
6.1读写字符文件
读:BufferedReader br=new BufferedReader(new FileReader("文件路径"));
写:BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径",boolean));
6.2读写字节文件
DataInputStream dis=new DataInputStream(new FileInputStream("文件路径"));
DataOutputStream dos=new DataOutputStream(new FileOutputStream("文件路径"));
6.3读取整个字符文件
String str=null;
while((str=br.readLine())!=-1){
System.out.println(str);
}
6.4读取整个字节文件
int b;
while((b=dis.read())!=-1){
System.out.println(b);
}
1 package Day20; 2 3 import java.io.DataInputStream; 4 import java.io.DataOutputStream; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 8 public class TestByteFile { 9 public static void main(String[] args) throws Exception { 10 DataInputStream dis1=new DataInputStream(new FileInputStream("src/a.jpg")); 11 int a=dis1.read(); 12 System.out.println(a); 13 dis1.close(); 14 15 DataOutputStream dos1=new DataOutputStream(new FileOutputStream("src/b.jpg")); 16 dos1.write(255); 17 dos1.close(); 18 19 //复制a.jpg--->b.jpg 20 DataInputStream dis2=new DataInputStream(new FileInputStream("src/a.jpg")); 21 DataOutputStream dos2=new DataOutputStream(new FileOutputStream("src/b.jpg")); 22 int b; 23 while((b=dis2.read())!=-1){ 24 dos2.write(b); 25 } 26 dis2.close(); 27 dos2.close(); 28 } 29 }