Java 字符流读写文件

据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定。只能抄抄模板拿来用了。

输入输出流分字节流和字符流。先看看字符流的操作,字节转化为字符也可读写。

一、写入文件

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!\n");  //为文件fw写入字符
 9             bw.write('\n');//换行
10             bw.write("\n");//换行
11             bw.newLine();//换行,并非所有平台都使用换行符('\ n')来终止行。 因此,调用此方法来终止每个输出行,因此优选直接写入换行符。 
12             bw.write("Oh no!\n"); 
13             String s="shoulinniao\n";
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 }

猜你喜欢

转载自www.cnblogs.com/shoulinniao/p/11623687.html