JAVA的输入输出是以程序为标准,如文件/内存/键盘读入数据到程序,简称输入,
程序将数据读出到文件/内存/控制台,简称输出
文件定义是相关记录或放在一起的数据的集合,一般存储在硬盘,CD等移动盘中
JAVA会通过java.io.File包调用访问文件属性
mkdir 仅创建一级目录
mkdirs 创造多级目录,开发中一般用mkdirs()
如父级目录可达,可以直接用createNewFile()创建文件,也可以用mkdir()来创建目录
如果父级目录不存在,需要先用getParentFile()获取父级File对象,用父级对象.mkdirs可以递归创建全部的父级目录
File类解决的是文件或者是文件夹的路径问题
构造的File类对象表示一个路径,指向目标文件或文件夹。
File path = new File("."); 表示当前目录
File path = new File("E:\\Java"); 表示E盘里的Java文件(或者是文件夹),注意要用双斜线\\。
操作:增删改查
增:createNewFile(),mkdir(),mkdirs()
删:delete(),deleteOnExit()
改:renameTo()
查:getPath(),getName(),getAbsolutePath(),getParentFile(),getParentPath(),list(),listFiles()
写方法:只要传路径,就能把路径下的所有文件都打印出来
public void listFileNames(String path){
File f=new File(path);
if(!f.exist()) return;
if(f.isFile()){ sout(path); return;}
File[] children=f.listFiles();
if(children==null||children.length==0) return;
for(File fl:children){
listFileName(f1.getPath());
}
File与list方法:
list()方法存储的是文件名,它会返回一个字符数组,将指定路径下的文件或文件夹名字存储到String数组中。因为其返回的是一个String类型的数组,所以它也就只是一个名字而已
有以下两种重载方式:
1)、String[] list()
2)、String[] list(FilenameFilter filter)
listFiles()方法存储的是文件的完整路径,因此在遍历文件夹以及子文件夹中所有文件时必须使用listFiles()方法,返回的是一个File类的引用,它具有类的所有属性和方法,比如:String getName()
方法就能够返回该文件的String类型的文件名(名字而已)
public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录
listFiles在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须存在
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException异常
ublic class TestIO {
public static String readFile(String Path) throws IOException {
FileInputStream fis=new FileInputStream(Path);
StringBuilder sb=new StringBuilder();
int tmp;
while((tmp=fis.read())!=-1){
sb.append((char)tmp);
}
fis.close();
return sb.toString();
}
public static String readFileByte(String Path) throws IOException {
FileInputStream fis = new FileInputStream(Path);
byte[] b=new byte[fis.available()];//available代表流当中有多少可读的字节
fis.read(b);
fis.close();
return new String(b);
}
public static void main(String[] args) throws IOException {
//FileInputStream fis=new FileInputStream("a.txt");//路径名构造法
//File f=new File("a.txt");
//FileInputStream fis=new FileInputStream(f);//对象构造法
//for(int i=0;i<f.length();i++){
//int read = fis.read();//一次只能读一个int
//System.out.print((char) read);
//int tmp;
//while((tmp=fis.read())!=-1){
//System.out.print((char) tmp);
String s=readFile("a.txt");
System.out.println(s);
String y=readFileByte("a.txt");
System.out.println(s);
}
}
未抛出异常的处理方法
基础流
文件字节流 FileInputStream FileOutoutStream
文件字符流 FileReader FileWriter
转换流 InputStreamReader OutputStreamWriter
缓冲流 BufferedReader BufferedWriter
二进制流 DataInputStream DataOutputStream
对象流 ObjectInputStream ObjectOutputStream
高级流
ObjectOutputStream将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象
ObjectInputStream也是一个高级流,对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化