1、java流分为两种
(1)字节流:可以用于读写二进制文件及任何类型文件byte
(2)字符流:可以用于读写文本文件,不能操作二进制文件
字节流 字符流
输入 InputStream Reader
输出 OutputStream Writer
2、File类的基本用法
import java.io.*;
public class Io{
File f1 = new File("e:\\aa.txt");//创建一个文件对象
System.out.println("文件路径"+f1.getAbsolutePath());//得到文件的路径
System.out.println("文件的大小"+f1.length());//得到文件的大小,字节数
File f3 = new File("e:\\ff");//创建文件夹
if(f3.isDirectory()){//判断文件夹是否存在
System.out.println("文件夹存在,不能创建!");
}else{
f3.mkdir();//创建文件夹
}
File f2 = new File("e:\\ff\\hsp.txt");//创建文件和创建文件夹
if(!f2.exists()){//判断文件是否存在
try{//可以存在
f2.createNewfile();//创建一个新文件
}catch(Exception e){
e.printStackTrace();
}
}else{
System.out.println("文件存在,不能创建!");
}
File f4 = new File("e:\\ff");\\列出一个文件夹下面的所有文件
if(f4.isDirectory()){\\判断文件夹是否存在
File lists[] = f4.listFiles();//将文件夹的文件,传给lists数组
for(int i=0;i<lists.length;i++){//遍历数组
System.out.println("显示出文件名是"+lists[i].getName());//输出文件夹下所有的文件名
}
}
}
3.读取文件
import java.io.*;
public class Io{
public static void main(String[] args){
File f = new File("e:\\ff\\hsp.txt");//得到一个文件对象,f指向e:ff\hsp.txt文件
FileInputStream fis = null;
try{
fis = new FileInputStream(f);//定义一个字节数组,相当于缓存
byte []bytes = new byte[1024];
int n=0;//得到实际读取到的字节数
while((n=fis.read(bytes))!=-1){//循环读取
String s = new String(bytes,0,n);//把字节转成String
System.out.println(s);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{//关闭文件流必须放在finally语句块中
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
4、从键盘接收用户输入内容,并保存到文件中
import java.io.*;
public class Io{
public static void main(String[] args){
File f = new File("e:\\ff\\ss.txt");//直接覆盖写同一个文件
FileOutputStream fos = null;
if(f.exists()){
System.out.println("文件已存在");
}else{
try{
fos = new FileOutputStream(f);
String s ="hello,world!\r\n";
String s1="中国人";
fos.write(s.getBytes());
fos.write(s1.getBytes());
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fos.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}
}
}
5、图片拷贝
import java.io.*;
public class Io{
public static void main(String[] args){
FileInputStream fis = null;//输入流先将图片读到内存 再读到文件
FileOutputStream fos = null;//输出流
try{
fis= new FileInputStream("e:\\ff\\a.jsp");
fos = new FileOutputStream("e:\\a.jsp");
byte buf[] = new byte[1024];
int n=0;//记录实际读取到的字节数
while ((n=fis.read(buf))!=-1){//循环读取图片
fos.write(buf);//输出到指定文件
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fis.close();
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
6.读取一个文件并写入到另一个文件中char[]来中转
import java.io.*;
public class Io{
public static void main(String[] args){
FileReader fr = null;//文件取出字符流对象(输入流)
FileWriter fw = null;
try{
fr= new FileReader("e:\\ff\\hsp.txt");//创建fr对象
fw = new FileWriter("e:\\hsp.txt");//创建输出对象
char c[] = new char[1024];
int n=0;//读入到内存
while ((n=fr.read(c))!=-1){
String s = new String(c,0,n);
System.out.println(s);
fw.write(c,0,n);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
fr.close();
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
7、缓冲字符流
import java.io.*;
public class Io{
public static void main(String[] args){
BufferedReader br = null;
BufferedWriter bw = null;
try{
FileReader fr = new FileReader("e:\\ff\\hsp.txt");
br = new BufferedReader(fr);
FileWriter bw = new FileWriter("e:\\hsp.txt");
bw = new BufferedWriter(fw);
String s= "";//循环读取
while ((s=br.readLine())!=null){
bw.write(s+"\r\n");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
br.close();
bw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}