java读文件

java.io.*;

public abstract class Reader implements Readable,Closeable{}

    public class BufferedReader extends Reader{

        public BufferedReader(Reader in);创建一个使用默认大小输入缓冲区的缓冲字符输入流。

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

}

public class InputStreamReader extends Reader{

    public InputStreamReader(InputStream in);创建一个使用默认字符集的 InputStreamReader。

    public InputStreamReader(InputStream in, StringcharsetName); 创建使用指定字符集的InputStreamReader。

    public InputStreamReader(InputStream in, Charset cs);创建使用给定字符集的 InputStreamReader。

    public InputStreamReader(InputStream in, CharsetDecoderdec);创建使用给定字符集解码器的 InputStreamReader。

}

        public class FileReader extends InputStreamReader{

            public FileReader(String fileName){ super(new                 FileInputStream(fileName));}

            public FileReader(File file) {super(new FileInputStream(file));}

            public FileReader(FileDescriptor fd) {  super(newFileInputStream(fd));             }

}

public abstract classInputStream implements Closeable{}

    public class FileInputStream extends InputStream{

        public FileInputStream(String name) throws FileNotFoundException {this(name != null ? new File(name) : null); }

        public FileInputStream(File file);

        public FileInputStream(FileDescriptorfdObj);

}

FileInputStream从文件系统中的某个文件中获得输入字节。

public class File implements Serializable,Comparable<File>{

public File(String pathname);

public File(String parent,String child);

public File(File parent, String child);

public File(URI uri);

}

Reader是用于读取字符流的抽象类;InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。BufferedReader的最大特点就是缓冲区的设置。通常Reader所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。 使用BufferedReader可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和InputStreamReader)。例如:

BufferedReader in = new BufferedReader(newInputStreamReader(System.in));

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。InputStreamReader最大的特点是可以指转换的定编码格式,这是其他类所不能的,从构造方法就可看出,这一点在读取中文字符时非常有用。

FileReader与它的父类InputStreamReader的主要不同在于构造函数,主要区别也就在于构造函数!

InputStream是表示字节输入流的所有类的超类。

我们都知道计算机能识别的只有0和1,数据是以字节为单位存储的。

a.故在java中,我们若想要从文件中读取一个字符,首先我们需要有一个文件(数据源),于是我们就使用到了File类来制定一个文件;

b. 因为数据在计算机中都是0和1代码,以字节为单位,所以我们所指定的file对象就需要先转化成字节流,所以需要用到InputStream类;

c. 这时候,如果在java中只是以字节来读取文件的话,就足够了。但是如果想要以字符来读取文件的话,还需要对字节流进行以某种方式编码,因为不同的字符采用不同的编码方式,如果仍然使用字节流的话,可能会达不到我们想要的效果。我们可以指定字符编码方式,这个通过在InputStreamReader相关类的构造器中指定并实例化,默认下是Unicode编码方式。到了这里,我们已经用到了InputStreamReader。

d. 经过了上面三个步骤,我们已经可以从文件中读取到一个字符了,但是每次只读取一个字符又不能满足我们读取大数据的需求,这时候BufferedReader就派上用场了。从名字中的Buffer我们可以推测出它具有缓冲的作用,事实也是如此,它可以一次读取多个字符,一次性读取的字符数目还可以自由设置。

用法:

Filefile = newFile("E:/abc/1.txt");

1.   if(!file.exists())

2.      {

3.          try {

4.               file.getParentFile().mkdir(); //如果文件夹不存在则先创建文件夹

5.              file.createNewFile();

6.          } catch (IOException e) {

7.              // TODO Auto-generated catch block

8.              e.printStackTrace();

9.          }

10.    }

(1)FileInputStream fit = new FileInputStream(file);//以二进制方式处理,不会出现乱码现象;处理非纯文本文件;-读取出来是byte数据

InputStreamReader isr = new InputStreamReader(fit,"UTF-8");

BufferedReader br = new BufferedReader(isr);

//InputStreamReader读取char数据

int ch = 0;

while((ch=isr.read())!=-1){ System.out.println((char)ch); }

(2)FileReader fr = new FileReader(file);//处理纯文本文件,InputStreamReader的子类

 

//FileReader读取char数据

int ch = 0;

while((ch = fr.read())!=-1 ) {System.out.println((char)ch); }

(3)FileReader fr = new FileReader(file);

BufferedReaderbr = newBufferedReader(fr);

//BufferedReader读取String数据

String ch = "";

while((ch=br.readLine())!=null){System.out.println(ch);}

时间: 2024-08-03 19:26:36

java读文件的相关文章

java 读文件 解析

[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        Input

java读文件的几个类

链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100f628.html 最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类.java.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别.即用Reader读取出来的是char数组

JAVA读文件和写文件的的代码模版

有的时候经常为真么读写文件最合理发愁,因为JAVA提过读写文件的方式太多了(C更甚至,fopen & open又有多少人傻傻分不去,更别说ReadFile了). 这里个人绝对比较好的写法,仅供参考. ********************************************************************************************************************** 读取文件: *************************

Java读写文件方法总结

Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既然都会想不起来怎么写了,不过我的Java代码量也实在是少的可怜,所以应该多多练习.这里做一个总结,集中在一起方面今后查看. Java读文件 1 package 天才白痴梦; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.F

java IO文件操作简单基础入门例子,IO流其实没那么难

IO是JAVASE中非常重要的一块,是面向对象的完美体现,深入学习IO,你将可以领略到很多面向对象的思想.今天整理了一份适合初学者学习的简单例子,让大家可以更深刻的理解IO流的具体操作. 1.文件拷贝 try {             File inputFile = new File(args[0]);             if (!inputFile.exists()) {                 System.out.println("源文件不存在,程序终止");

java创建文本、文件、读文件、写文件

1 package Head18; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException; 9 10 public class Mkdirs_FileRW { 11 public st

java读写文件,读超大文件

一直在处理爬虫,经常能遇到读写文件的操作,很多时候都是读写超大文件,记录如下: 一.读文件 import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;

JAVA读、写EXCEL文件

采用jxl.jar包,网上下载,百度一下到出都是.希望可以帮助到大家. 接下来直接贴代码: <span style="font-size:18px;">public List getValue(String fileName){ String str=ExcelOparations.readExcel(fileName).trim(); String[] str4n= str.split("\n"); List list1 = new ArrayList

java中文件的读与写

最近一直在学习java中如何读取和写出文件,看了java API之后,发现在java.io中有很多关于文件读与写的类,下面就介绍几个经常用到的. 首先是:InputStream和OutputStream,API中说它俩是所有抽象类表示字节输入输出流的超类,所以在它们下面派生了很多子类.例如:FileInputStream和OutputStream等等.这些类都是以单字节的形式读入数据的,所以如果读入的数据中有中文字符,那么就会出现中文乱码现象. 其次是:Reader和Writer,这两个类是用于