IO学习笔记

1.Class File:

文件和目录路径名的抽象表示。

pathSeparator//与系统相关路径分隔符

separator//系统相关的默认名称分隔符

(1)构造方法:

File(String pathname);//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

File f = new File("D://1.txt");

File(String parent,String child)根据指定的父路径和文件路径创建一个新File对象。

File f = new File("D://A","1.txt");

File(File parent,String child);//从父抽象路径和子路径名字符串创建新的File实例。

File f = new File("D://a");
File w = new File(f,"1.txt");

(2)常用方法:

创建新文件: 

creatNewFile();

File f = new File("D://1.txt");
boolean flag = f.createNewFile();
System.out.println(flag);//true原来不存在该文件创建成功,false原来存在创建失败

创建文件夹:

mkdir();

File f = new File("D://a");
boolean flag2=f.mkdir();//true创建成功,false已存在创建失败

mkdirs();

File f = new File("D://b//b");//创建多重文件夹
boolean flag2=f.mkdirs();//因不存在创建成功后返回true,否则false

删除文件:

delete();

File f = new File("D://b//c");
boolean flag2=f.mkdirs();
f.delete();//删除b文件夹里的c文件夹

 判断文件是否存在:

exists();

File f = new File("D://b");
boolean flag=f.exists();//存在返回true,否则false

 改变文件位置: 

file.renameTo(new file)

File f = new File("D://1.txt");//f中1.txt必须存在
File p = new File("D://3.txt");//p中3.txt不能存在
boolean flag=f.renameTo(p);//改名成功返回true,否则false

获取文件路径:

getAbsolutePath():

File f = new File("D://1.txt");
System.out.println(f.getAbsoluteFile());

 

相对路径和绝对路径:

绝对路径:从盘符开始,是一个完整的路径,例如c://a.txt

相对路径:在java代码中是相对于项目目录路径,这是一个不完整的便捷路径,在java开发中很常

用,例如:a.txt

2.IO流

(1)概述:

可以将这种数据传输操作,看做一种数据流动,按照流动的方向分为输入Input和输出Output

Java中的IO操作主要指的是java.io包下的一些常用类的使用,通过这些类对数据进行读取和写出。

分类:

             输入与输出 (按方向)

             字节流与字符流(根据流动的数据类型分类)

一切皆字节:计算机中的任何数据都是以二进制的形式存储的。

                      在数据传输时也都是以二进制的形式存储的。

                      后续学习的任何流,在传输时底层都是二进制

(2)文件字节流:

(i)输出流:

Class OutputStream

close();//关闭次输出流并释放与此流关联的所有系统资源。

flush();//刷新此输出流并强制写出任何缓冲的输出字节。

write(byte[] b);//将b.length字节从指定的字节数组写入此输出流。

write(byte[] b, int off,int len);//将从偏移量off开始的指定字节数组中的leen字节写入此输出流。

write(int b);//将指定的字节写入此输出流。

子类:

Class  FileOutputStream

构造方法:

FileOutputStream(File file);

FileOutputStream(File file,Boolean append);//append=true追加,不写追加清空原文件内容。

实例:

FileOutputStream f = new FileOutputStream("3.txt", true);
byte [] b =new byte[10] ;
b ="abcde".getBytes();//将字符串转为字节数组
//f.write(b);
f.write(b,1,3);//从下标为1开始写三个数据
f.flush();
f.close();

(ii)输入流

Class InputStream

close();//关闭次输出流并释放与此流关联的所有系统资源。

flush();//刷新此输出流并强制写出任何缓冲的输出字节。

read();//读取

子类:

FileInputStream

read();//读取一个字符

FileInputStream f = new FileInputStream("3.txt");//3.txt已存在
int readdata=f.read();
while(readdata!=-1){
   System.out.print((char)readdata);
   readdata = f.read();
}
f.close();

byte [ ] b = new byte[10];//减少io频率

int len = xx.read(b);

System.out.println(new String(b,0,len));

FileInputStream f = new FileInputStream("3.txt");
byte []b = new byte[10];
int len = 0;
 do {
     len = f.read(b);
     System.out.println(new String(b, 0, len));
 }while(len==10);
}

(3)文件字符流:

(i)输出:

FileWrite是Write的子类

构造方法:与字节流相似

FileWriter(String filename) ; 
FileWriter(File filename) ;
FileWriter(String filename, boolean append) ; 
FileWriter(File filename,boolean append) ;

方法:

write(int n)//向输出流写入一个字符。
write(byte b[])//向输出流写入一个字符数组。
write(byte b[],int off,int length)//从给定字符数组中起始于偏移量off处取len个字符写到输出流。
close()//关闭输出流。

FileWriter f = new FileWriter("3.txt");
char []b = {'周','杰','伦','真','有','才'};
f.write(b);
f.close();

(ii)输入:

构造方法:与字节流相似

FileReader(String filename) ;

FileReader(File filename) ;

方法:

read();//读一个字符
read(char b[]);//都一个字符数组
read(char b[], int off, int len);//都一个数组从下标off开始偏移len个字符
close();

FileReader F = new FileReader("3.txt");
char []c = new char[3];
int len = F.read(c);
while(len!=-1) {
     System.out.println(c);
     len = F.read(c);
}
F.close();

(4)缓冲流 

BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。

构造方法:

BufferedReader(Reader in);

BufferedWriter(Writer out);

BufferedReader流能够读取文本行:

方法:readLine();

FileReader F = new FileReader("3.txt");
BufferedReader f = new BufferedReader(F);
String s = f.readLine();
do {
   System.out.println(s);
   s = f.readLine();
}while(s!=null);

BufferedWriter:
write(String s,int of,int len)//把字符串s写到文件中
newLine();// 向文件写入一个回行符
 

FileWriter F = new FileWriter("3.txt");
BufferedWriter f = new BufferedWriter(F);
f.write("周杰伦的歌好好听");
f.flush();
f.newLine();
f.write("我好喜欢他啊");
f.flush();
f.close();

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值