您的位置:首页 > 编程语言 > Java开发

java io文件学习笔记

2013-08-28 14:07 337 查看
java io文件学习笔记

File f = new file("D:"+File.separator+"test.txt");

File.separator跨系统文件分隔符

f.createNewFile();创建文件

f.mkdir();创建文件夹

f.delete();删除

f.list();f.listFile(); 用于遍历文件

字节流由InputStream和OutputStream处理。

对字节流进行处理的类都继承了InputStream或OutputStream。

BufferedInputStream: 提供了缓冲功能。

DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

PipedInputStream: 允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。

PushbackInputStream: 允许放回已经读取的数据。

SequenceInputStream: 能对多个inputstream进行顺序处理。

BufferedOutputStream: 提供了缓冲功能的输出流,在写出完成之前要调用flush来保证数据的输出。

DataOutputStream: 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

PipedOutputStream: 允许以管道的方式来处理流。可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入
PipedOutputStream
对象,并由其他线程从连接的
PipedInputStream
读取。

PrintStream: 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。我们经常用到的System.out或者System.err都是PrintStream。

字符流由Reader和Writer处理。

输入流:

CharArrayReader: 从内存中的字符数组中读入数据,以对数据进行流式读取。

StringReader:从内存中的字符串读入数据,以对数据进行流式读取。

FileReader:从文件中读入数据。注意这里读入数据时会根据JVM的默认编码对数据进行内转换,而不能指定使用的编码。所以当文件使用的编码不是JVM默认编码时,不要使用这种方式。要正确地转码,使用InputStreamReader。

装饰类:

BufferedReader:提供缓冲功能,可以读取行:readLine();

LineNumberReader: 提供读取行的控制:getLineNumber()等方法。

InputStreamReader: 字节流通向字符流的桥梁:它使用指定的
charset
[/code]读取字节并将其解码为字符。

输出流:

根数据目的相关的类:

CharArrayWriter:把内存中的字符数组写入输出流,输出流的缓冲区会自动增加大小。输出流的数据可以通过一些方法重新获取。

StringWriter: 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。

FileWriter:把数据写入文件。

装饰类:

BufferedWriter:提供缓冲功能。

OutputStreamWriter:字符流通向字节流的桥梁:可使用指定的
charset
[/code]将要写入流中的字符编码成字节。

PrintWriter: 向文本输出流打印对象的格式化表示形式。

一个练习示范代码

1 package su;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.FileReader;
7 import java.io.FileWriter;
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.io.OutputStream;
11 import java.io.Reader;
12 import java.io.Writer;
13
14 public class Test {
15
16     public static void main(String[] args) throws IOException {
17         String filename = "E:"+File.separator+"test.txt";
18         File f = new File(filename);
19         f.createNewFile();//创建文件
20
21         OutputStream outputStream = new FileOutputStream(f, true);//简单的字节流 使用追加写入
22
23         String str = "你好,哈哈哈";
24         byte[] b = str.getBytes();
25         outputStream.write(b);
26         outputStream.close();
27
28         if(f.isDirectory()){System.out.println("是文件夹");}//判断是否为文件夹
29
30         InputStream inputStream = new FileInputStream(f);  //简单的inputStream读出
31         byte[] by = new byte[(int)f.length()];   //使用字节流,长度为文件的长度
32         inputStream.read(by);
33         inputStream.close();
34         System.out.println(new String(by));
35
36
37         Writer writer = new FileWriter(f, true); //简单的字符串写入
38         writer.write("hello");
39         writer.close();
40
41         Reader reader = new FileReader(f);//简单的字符串读出
42         char[] ch = new char[1000];
43         reader.read(ch);
44         reader.close();
45
46         print(f); //遍历文件夹下的所有文件
47      }
48
49
50     private static void print(File f) {
51         // TODO Auto-generated method stub
52         if(f!=null){
53             if(f.isDirectory()){
54                 File[] file = f.listFiles();
55                 if(file!=null){
56                     for(int i=0;i<file.length;i++){
57                         print(file[i]);
58                     }
59                 }
60             }else{
61                 System.out.println(f);
62             }
63     }
64     }
65 }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: