• Java 字符流读写文件


    输入输出流分字节流和字符流。字符流的读写通常以read和write结尾。

    一、写入文件

    1.FileWriter类:

    FileWriter fw=new FileWriter("hello");//在workspace工作空间里创建文件,文件名为hello

    FileWriter fw=new FileWriter("E:\hello");//在E盘创建文件,文件名为hello

    FileWriter fw=new FileWriter("E:\hello.txt");//在E盘创建txt文件hello

    如果在相同位置已经有同名文件会覆盖原来的文件,即一个新建的空文件

    如果路径不对则会抛出异常,例如:java.io.FileNotFoundException: Z:hello (系统找不到指定的路径。)

    2.BufferedWriter类:

    将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。

     1 import java.io.*;
     2 
     3 public class MyTest9 {
     4     public static void main(String []args) {
     5         try{  
     6             FileWriter fw=new FileWriter("E:\hello");//在workspace工作空间里创建文件
     7             BufferedWriter bw=new BufferedWriter(fw);//创建bw对象专门为fw对象写入字符流,fw是某个文件引用(对象)
     8             bw.write("Hello world!
    ");  //为文件fw写入字符
     9             bw.write('
    ');//换行
    10             bw.write("
    ");//换行
    11             bw.newLine();//换行,并非所有平台都使用换行符(' n')来终止行。 因此,调用此方法来终止每个输出行,因此优选直接写入换行符。 
    12             bw.write("Oh no!
    "); 
    13             String s="shoulinniao
    ";
    14             bw.write(s);
    15             bw.write(s,0,5);
    16             bw.newLine();
    17             char[] s2=new char[10];
    18             for(int i=0;i<10;i++)
    19                 s2[i]=(char)(i+'0');
    20             bw.write(s2);
    21             bw.newLine();
    22             bw.write(s2,0,8);//从0开始截取,截8个长度,即下标0-7
    23             bw.newLine();
    24             int a=19;
    25             bw.write(a);//数字读不进去,要转成字符
    26             bw.newLine();
    27             bw.write(8);
    28             bw.newLine();
    29             bw.write(s.valueOf(a));//转化为字符型
    30             bw.close();//不关掉的话duqu.txt里没东西
    31         }catch(Exception ex){  
    32             ex.printStackTrace();  
    33         }  
    34     } 
    35 }
    写入文件

    二、读出文件

    1.File类:

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

    String [] list();//返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。

    String getPath();//将此抽象路径名转换为路径名字符串。

    Boolean isAbsolute();//判断是否为绝对路径

    Boolean isDirectory();//判断是否为目录

    boolean mkdir();//创建由此抽象路径名命名的目录。

    boolean mkdirs();//创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。如果目录存在不会重建空目录

     1 import java.io.File;
     2 
     3 public class MyTest10{
     4     public static void main(String []args) {
     5         try{  
     6             File ffwq=new File("E:\");//创建代表路径的对象,并不是创建一个文件 
     7             
     8             File ff=new File("E:\new_directory3");  
     9             ff.mkdirs(); //在路径ff下新建一个目录目录名new_directory
    10             //打印出目录下的内容  
    11             if(ffwq.isDirectory()){  
    12                 String[] de=ffwq.list();  
    13                 for(int i=0;i<de.length;i++){  
    14                     System.out.println(de[i]);  
    15                 }  
    16                 System.out.println("---------------------------1");
    17                 de=ff.list();  
    18                 for(int i=0;i<de.length;i++){  
    19                     System.out.println(de[i]);  
    20                 }
    21             }  
    22             System.out.println("---------------------------2");
    23             //取的文件的绝对路径 
    24             System.out.println(ff.getAbsolutePath());  
    25             //删除对象代表的文件.如果目录下有文件也会返回false,删除不成功也会返回false。  
    26             boolean delet=ff.delete(); //目录下是空的才能删除,返回true,否则返回false
    27             System.out.println(delet);  
    28             }catch(Exception ex){  
    29                 ex.printStackTrace();  
    30             }  
    31     }
    32 }
    File类的一些语法

    2.FileReader类:

    FileReader(File file);//创建一个新的 FileReader ,给出 File读取。
    FileReader(String fileName);//创建一个新的 FileReader ,给定要读取的文件的名称。

    3. BufferedReader类:

    从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。

    BufferedReader(Reader in);//创建使用默认大小的输入缓冲区的缓冲字符输入流。
    BufferedReader(Reader in, int sz);//创建使用指定大小的输入缓冲区的缓冲字符输入流。

    void close();//关闭流并释放与之相关联的任何系统资源。

    String readLine();//读一行字符

     1 public class MyTest8 {
     2         public static void main(String[] args) {  
     3             ArrayList<String> list = new ArrayList<String>();
     4             try{  
     5                 File f=new File("E:\hello");//创建文件对象f 
     6                 FileReader fr=new FileReader(f); //fr对象 对应f的读出
     7                 BufferedReader br=new BufferedReader(fr);//br是 对应fr的 读出缓冲区
     8                 String shuchu=null;  
     9                 int i=0;
    10                 while((shuchu=br.readLine())!=null){  
    11                     list.add(shuchu);//用一个数组全部存起来方便修改
    12                     System.out.println(shuchu);
    13                 }  
    14                 for(int j=0;j<list.size();j++)
    15                     System.out.println(list.get(j));
    16                 br.close();  
    17             }catch(Exception ex){  
    18                 ex.printStackTrace();  
    19             }  
    20         }  
    21 }
  • 相关阅读:
    Composition API
    Vue通讯
    pc-H5 适配方案
    Mac Chrome浏览器跨域指令快速启动应用创建,避免每次在终端输入指令
    datatables 添加title属性
    元素的显示与隐藏
    【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解
    【前端】javascript+jQuery实现旋转木马效果轮播图slider
    【前端】javascript+jquery实现手风琴式的滚动banner或产品展示图
    【前端】javascript实现带有子菜单和控件的轮播图slider
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/11623687.html
Copyright © 2020-2023  润新知