Day11:JAVA IO下

Posted Layman52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day11:JAVA IO下相关的知识,希望对你有一定的参考价值。

Day11:JAVA IO下

字符流复制文件

FileReader fr = new FileReader("D:\\\\a.txt");

FileWriter fw = new FileWriter("D:\\\\b.txt");

int data=0;

while((data=fr.read())!=-1){

fw.write(data);

fw.flush();

}

fr.close();

fw.close();

字符缓冲流

BufferedReader、BufferedWriter

  • 高效读写

  • 支持输入换行符

  • 可一次写一行、读一行

BufferedReader

read()

readLine()

BufferedWriter

write()

newLine() //写入一个行分隔符,实际上是兼容了各种系统的换行转义字符

flush()

打印流

PrintStream、PrintWriter

  • 支持数据原样打印

PrintWriter

filush()

各种print、println和write方法

转换流

也称为桥转换流:InputStreamReader/OutputStreamWriter

  • 可将字节流转换为字符流

  • 可设置字符的编码方式

InputStreamReader父类为Reader

InputStreamReader

字节转换成字符

InputStreamReader(InputStream is[,String charset])

getEncoding()

read()

close()

OutputStreamWriter

字符转换成字节

OutputStreamWriter(OutputStream os[,String charset])

flush()

close()

write()

File类

概念:代表物理盘符中的一个文件或者文件夹

方法

  • createNewFile() //创建一个新文件

  • mkdir() //创建一个新目录

  • delete() //删除文件或空目录

  • exists() //判断File对象所代表的对象是否存在

  • getAbsolutePath() //获取文件绝对路径

  • getName() //取得名字

  • getParent() //获取文件或目录所在的目录

  • isDirectory() //是否是目录

  • isFile() //是否是文件

  • length() //获取文件的长度

  • listFiles() //列出目录中的所有内容

  • renameTo() //修改文件名为

使用

路径分隔符:

File.pathSeparator

文件名\\目录分隔符:

File.separator

构造方法:

File(String fileLocationName)

创建文件:(已存在则不创建)

File file = new File("D:\\\\a.txt");

if(!file.exists())

file.createNewFile();

删除文件:

file.delete();

//使用jvm退出时再删除

file.deleteOnExit();

创建文件夹:

File files = new File("D:\\\\aa\\\\bb\\\\cc");

if(!file.exists())

//files.mkdir(); //只能创建单级目录

files.mkdirs(); //创建多级目录

删除目录:

files.delete(); //只能删除最底层的空目录,deleteOnExit也一样

//获取名字

files.getName(); //只能获取最底层的文件夹名字

//遍历文件夹

files.list(); //获取该目录下的所有文件的名字String[]

files.listFiles(); //获取该目录下的所有文件File[]

FileFilter接口

public interface FileFilter

  • boolean accept(File pathName)

  • 当调用File类中的listFiles()方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,只有满足条件的文件才可出现在listFiles()的返回值中

//使用

File[] dir = files.listFiles(new FileFilter(){

@Override

public boolean accept(File pathName){

if(pathName.getName.endWiths(".jpg")){

return true;

}

return false;

}

})

递归遍历文件夹与递归删除文件夹

遍历:

public static void listDir(File file){

   File[] files = file.listFiles();
   System.out.println(file.getAbsolutePath());
   if(files!=null&&files.length>0){
       for(File f:files){
           if(f.isDirectory()){
               listDir(f);
          }else{
               System.out.println(f.getName());
          }
      }
  }

}

删除:

//递归删除文件夹
public static void deleteDir(File file){

   File[] files = file.listFiles();
   System.out.println(file.getAbsolutePath());
   if(files!=null&&files.length>0){
       for(File f:files){
           if(f.isDirectory()){
               deleteDir(f);
          }else{
               System.out.println(f.delete());
          }
      }
  }
   file.delete();

}

Properties

继承自HashTable

  • 存储属性名和属性值

  • 键值都是字符串

  • 没有泛型

  • 和流有关

//方法

setProperty(String key,String value)

当添加了多个属性后,toString出来的是以下格式

{key1=value1,key2=value2,...}

getProperty(String key) //获取对应的value

Set<String> stringPropertyNames(); //获取properties的所有key

list(PrintWriter pw); //具体使用如下:

PrintWriter pw = new PrintWriter("D:\\\\print.txt");
Properties pro = new Properties();
pro.setProperty("name","QianJun");
pro.setProperty("age","25");
pro.list(pw);
pw.close();

store(OutputStream|Writer os|w,String name) //通常用于保存到配置文件里,如下:

FileOutputStream fos = new FileOutputStream("D:\\\\store.properties");
Properties pro = new Properties();
pro.setProperty("name","QianJun");
pro.setProperty("age","25");
pro.store(fos,"注释");
fos.close();

load(InputStream is) //从配置文件里加载,如下:

FileInputStream fis = new FileInputStream("D:\\\\store.properties");
Properties pro2 = new Properties();
pro2.load(fis);
System.out.println(pro2.toString());
fis.close();

UTF-8编码里一个字符为3个字节

main方法后也可以抛出异常,但不建议这样做

properties文件不允许出现中文,会转换为unicode编码

以上是关于Day11:JAVA IO下的主要内容,如果未能解决你的问题,请参考以下文章

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

day06-jsp

Python Day10(补充)

python—day32 异步 + 回调 Eventgevent 协程单线程下实现遇到IO切换

Python_Day11_同步IO和异步IO

day 32异步+回调线程queue线程Event协程单线程下实现遇到IO切换