`
沐疯-
  • 浏览: 12884 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

java读取文件与写文件详解

阅读更多

 

本文转载至:http://www.iteye.com/news/31830

 

前言

java中io流一直是一个令人头疼的东西,主要是各种流,各种缓冲器太多,不好记忆,所以感觉学起来很费劲,选择起来也比较烦恼。

本文主要针对java的io流读取数据使用io流读取文件和向文件中写数据,并根据个人经验讲解应该怎么选择和使用。

 

需要的知识点:

1.字节流和字符流选择

字节流:字节流读取的时候,读到一个字节就返回一个字节;  主要用于读取图片,MP3,AVI视频文件。

字符流:字符流使用了字节流读到一个或多个字节,如读取中文时,就会一次读取2个字节。只要是处理纯文本数据,就要优先考虑使用字符流。

 

 

2.处理流和节点流

节点流:和操作系统紧密连接的流。该层的与文件输入输出的操作都比较原始,没有进过优化,功能比较单一。(FileReader,FileWriter和FileInputStream,FileOutStream都是输入节点流。)

 

处理流:该层流是对节点流的封装,对节点流中进行优化,加入缓冲器,提供更加丰富的API等。我们一般都使用处理流,在创建处理流对象的时候一般都需要节点流对象作为其构造参数。

(BufferedInPutStream,BufferedOutPutStream和BufferedWriter,BufferedReader)

对于这种带缓冲器的处理流与对应的节点流的最大区别可以参考:http://fjding.iteye.com/blog/2311233

 

本文重点讲解文件的读取和输出。

 

1. 文件的读取(节点流FileInputStream读取字节流

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
    public static void readFileByBytes(String fileName) {
        // 一般先创建file对象
        FileInputStream fileInput = null;
        try {
            File file = new File(fileName);
            if (!file.exists()) {
                file.createNewFile();
            }
            byte[] buffer = new byte[1024];
            fileInput = new FileInputStream(file);
            int byteread = 0;
            // byteread表示一次读取到buffers中的数量。
            while ((byteread = fileInput.read(buffer)) != -1) {
                System.out.write(buffer, 0, byteread);
            }

        } catch (Exception e) {
            // TODO: handle exception
        } finally {

            try {
                if (fileInput != null) {
                    fileInput.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

 

2. 文件读取(节点流FileReader读取字符流)

 

 

 其实FileReader也是需要FileInputStream对象转换的,要借助于InputStreamReader转换流。

 

3.文件的读取通过BufferedReader读取数据。

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
public static void readByBufferedReader(String fileName) {
        try {
            File file = new File(fileName);
            // 读取文件,并且以utf-8的形式写出去
            BufferedReader bufread;
            String read;
            bufread = new BufferedReader(new FileReader(file));
            while ((read = bufread.readLine()) != null) {
                System.out.println(read);
            }
            bufread.close();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

 

4.向文件中写入数据(字节流FileOutputStream)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
public void writeByFileOutputStream() {

        FileOutputStream fop = null;
        File file;
        String content = "This is the text content";
        try {
            file = new File("c:/newfile.txt");
            fop = new FileOutputStream(file);
            // if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }
            // get the content in bytes
            byte[] contentInBytes = content.getBytes();

            fop.write(contentInBytes);
            fop.flush();
            fop.close();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fop != null) {
                    fop.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

 

 

 

 

5. 向文件中写数据(FileReader)【注意使用FileReader(“path”,true)可以往文件后面追加内容,否则就直接覆盖了】

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
public static void writeByFileReader() {
        
try {
            
String data = " This content will append to the end of the file";

            File file = 
new File("javaio-appendfile.txt");
            
// if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            
// true = append file
            FileWriter fileWritter = new FileWriter(file.getName(), true);
            fileWritter.write(data);
            fileWritter.close();

        } 
catch (IOException e) {
            e.printStackTrace();
        }
    }

 

 

 

 6.采用BufferedWriter向文件中写数据

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
public static void writeByBufferedReader() {
        
try {

            
String content = "This is the content to write into file";
            File file = 
new File("/users/mkyong/filename.txt");
            
// if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = 
new FileWriter(file, true);
            BufferedWriter bw = 
new BufferedWriter(fw);
            bw.write(content);
            bw.flush();
            bw.close();

        } 
catch (IOException e) {
            e.printStackTrace();
        }
    }

 

总结:

       对于我来说,一般使用io来操作文件比较多一些,一般都喜欢用BufferedReader和BufferedWriter,使用它们的一般流程是,先创建File对象(可以对路径和文件进行更多的操作),然后通过File对象创建FileReader(FileWriter)【当然在这里也可以通过创建InputStreamReader(new InputStream)来获取reader对象,看个人爱好】,然后通过FileReader(FileWriter)获得BufferedReader(BufferedWriter)对象。对于读入文件,还可以使用Scanner对读取的文件进行操作,这个比较方便,Scanner也是处理流,因此也是需要节点流作为其参数的。

 

参考:

http://blog.csdn.net/yuebinghaoyuan/article/details/7388059

http://www.docin.com/p-747385065.html

http://blog.csdn.net/zzp_403184692/article/details/8057693

http://www.jb51.net/article/47062.htm

 

分享到:
评论

相关推荐

    详解Java无需解压直接读取Zip文件和文件内容

    "Java读取Zip文件和文件内容" Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面...

    Java_读写json格式的文件方法详解

    Java 读写 JSON 格式的文件方法详解 本文主要讲解了如何在 Java 中读写 JSON 格式的文件,解决了在实际应用中常见的问题。首先,需要了解什么是 JSON 格式,JSON 格式是一种轻量级的数据交换格式,易于人类阅读和...

    java读写properties配置文件

    ### Java读写Properties配置文件详解 #### 一、引言 在Java开发中,`Properties`类被广泛用于处理各种类型的配置文件。这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`...

    Java读写xml,word,xml文件(防乱码)

    不同的操作系统、软件可能使用不同的默认编码格式,这就会导致在跨平台或跨软件间读写文件时出现乱码问题。因此,在处理文件时,明确指定文件的编码格式是十分重要的。 #### 三、Java读取XML文件 对于XML文件的读取...

    hdf5文件结构以及基于java的读写

    ### HDF5 文件结构以及基于 Java 的读写 #### HDF 概述 HDF(Hierarchical Data Format)是一种自我描述、多对象的文件格式,专为高效地存储和分发科学数据而设计。它由美国国家超级计算应用中心(NCSA)开发,...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    java如何读取文件

    本文将详细解析如何使用Java读取文本文件,基于提供的代码示例,深入探讨其工作原理及最佳实践。 ### Java读取文本文件的基础 在Java中,读取文件主要依赖于`java.io`包中的类,如`FileReader`和`BufferedReader`...

    java读写文件,Java操作文件

    ### Java读写文件详解 #### 文件的建立、检查与删除 在Java中,对文件进行基本的操作主要包括创建、检查以及删除。以下通过示例代码详细解释这些操作。 **创建文件** 利用`java.io.File`类可以创建一个新的文件...

    Java输入输出流及文件读写详解

    ### Java 输入输出流及文件读写详解 #### I/O 类体系结构 在Java开发中,输入输出(I/O)操作是非常重要的部分,特别是在处理文件、网络通信等方面。Java的I/O类体系主要位于`java.io`包中,此外还有一些新实现的I...

    java读写xml文件的方法

    ### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...

    Java读写xml java 读写xml文件操作, 简单易懂

    ### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...

    java读取excel文件

    ### Java读取Excel文件知识点详解 #### 一、引言 在日常开发工作中,经常需要处理Excel文件。Java作为一种广泛使用的编程语言,提供了多种库来读取Excel文件,其中较为常用的有Apache POI和JExcelApi等。本文将详细...

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...

    java读取pdf文件属性

    本文将深入探讨如何使用Java读取PDF文件的属性,如作者、标题等元数据,以及相关的知识点。 ### 一、Java读取PDF文件属性的技术背景 在Java中读取PDF文件属性主要依赖于开源库PDFBox。PDFBox是一个用于处理PDF文档...

    Java读取TXT文件.txt

    ### Java读取TXT文件知识点详解 #### 一、导入必要的包 在Java程序中,我们需要首先导入处理文件读写的必要类库。在这个示例中,我们看到了`import java.io.*;`这一行代码,它表明了该程序将使用Java标准库中的`...

    Java_输入输出流及文件读写详解

    Java 输入输出流(I/O 流)是Java平台的核心特性之一,用于处理数据的传输,包括文件读写、网络通信等。在Java API中,I/O流被组织为一系列类和接口,主要位于`java.io`包。在JDK 1.0中引入了字节流(byte stream)...

    java操纵xml文件的读写,并根据xml生成树型菜单

    **知识点**: 上述代码展示了用于读写文件的基本Java类库(如`java.io.*`),以及用于处理XML的第三方库JDOM中的`SAXBuilder`等类。这些类是实现XML文件读写的基石。 ##### 2. 常量定义 ```java private static ...

    java读取大文件大全

    ### Java读取大文件技术详解 #### 一、引言 在Java开发中,处理大文件是一项常见的任务,尤其在数据分析、日志处理等领域尤为重要。本文将深入探讨如何使用Java来高效地读取大文件,并提供一个具体的示例代码进行...

    详解Java读取本地文件并显示在JSP文件中

    总而言之,Java读取本地文件并显示在JSP文件中涉及的知识点包括:文件I/O操作、异常处理、资源管理、Web应用的安全性、MVC设计模式、页面动态内容生成以及前后端交互。通过阅读本文,大家可以了解到如何将这些知识点...

    Java编程之文件读写实例详解

    在Java编程中,文件读写是至关重要的功能,它允许程序与磁盘存储交互,保存数据或获取数据。本篇文章将详细解析Java中如何进行文件读写操作,并通过实例演示不同方式的使用。 首先,Java中的文件读写操作主要用于将...

Global site tag (gtag.js) - Google Analytics