流
流是个抽象的概念,是不同进程间数据传输的机制,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。
当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等
流的本质是(硬件)二进制/(Java)字节数组
流分类:
1.处理的数据单位不同,可分为:字符流,字节流
2.数据流方向不同,可分为:输入流,输出流
3.功能不同,可分为:节点流,处理流
创建文件
//文件:File(文件/目录)
File file =new File (string path) ;
Path:
相对路径:根目录为当前工程根目录(非web)
绝对路径:从分区盘符开始到目标的完整路径
路径的表示方式: c: \ \dir\ \subdir\l… c:/dir/subdir/. . .//共性操作
文件操作
boolean exists = file.exists();
String relativePath = file.getPath();
String absolutePath = file.getAbsolutePath();
String name = file().getName ();
boolean success =file.delete ();
boolean success=file.delectOnExit();
boolean isFile = file.isFile () ;
long size = file.length () ;
long lastModifiedTime = file.lastModified () ;
boolean success = file.createNewFile () ;
目录操作
boolean isDir =file.isDirectory ();
boolean success =file.mkdir ();
boolean success =file .mkdirs ();
FileFilter filter =new FileFilter () {
@override
public boolean accept (File file){
return file.getName ( ) .endswith ( " .zip");
}
};
File[]files = file.listFiles ( [filter] );
字符流
字节流读写数据
string path = ...;
File dir = new File (String path) ;
//写
Filewriter fw =new Filewriter (string/File path)
fw.write (string content) ;
fw.close () ;
//读
FileReader fr = new FileReader (String/File path);
char[]chars =new chars [int length] ;
int len = fr.read (chars) ;
fr.close () ;
//写
File file = new File ( "myfile/ aa.txt") ;
FileWriter writer =nu11;
try {
writer =new Filewriter (file , true) ;
writer .write("天安门上太阳照..." ) ;
}catch(IOException e) {
e.printstackTrace ();
}finally {
//释放资源
try {
writer.close () ;
}catch (工OException e){
e.printstackTrace () ;
}
}
//读
FileReader fr =nul1;
try {
fr =new FileReader (file) ;
char[]chars =new char[4];
int len = -1;
while ( (len=fr.read (chars))!=-1){
system.out.println (new string (chars ,0 , len) ) ;
}catch (FileNotFoundException e){
e.printstackTrace ();
}catch (IOException e){
e.printstackTrace () ;
}finally {
try {
fr.close ();
}catch (工OException e){
e.printstackTrace () ;
}
}