`
Charles+java
  • 浏览: 180766 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java读取 FILE 的例子

 
阅读更多
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;

public class ReadFromFile {
    /**
     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
     */
    public static void readFileByBytes(String fileName) {
        File file = new File(fileName);
        InputStream in = null;
        try {
            System.out.println("以字节为单位读取文件内容,一次读一个字节:");
            // 一次读一个字节
            in = new FileInputStream(file);
            int tempbyte;
            while ((tempbyte = in.read()) != -1) {
                System.out.write(tempbyte);
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        try {
            System.out.println("以字节为单位读取文件内容,一次读多个字节:");
            // 一次读多个字节
            byte[] tempbytes = new byte[100];
            int byteread = 0;
            in = new FileInputStream(fileName);
            ReadFromFile.showAvailableBytes(in);
            // 读入多个字节到字节数组中,byteread为一次读入的字节数
            while ((byteread = in.read(tempbytes)) != -1) {
                System.out.write(tempbytes, 0, byteread);
            }
        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 以字符为单位读取文件,常用于读文本,数字等类型的文件
     */
    public static void readFileByChars(String fileName) {
        File file = new File(fileName);
        Reader reader = null;
        try {
            System.out.println("以字符为单位读取文件内容,一次读一个字节:");
            // 一次读一个字符
            reader = new InputStreamReader(new FileInputStream(file));
            int tempchar;
            while ((tempchar = reader.read()) != -1) {
                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
                // 但如果这两个字符分开显示时,会换两次行。
                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                if (((char) tempchar) != '\r') {
                    System.out.print((char) tempchar);
                }
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            System.out.println("以字符为单位读取文件内容,一次读多个字节:");
            // 一次读多个字符
            char[] tempchars = new char[30];
            int charread = 0;
            reader = new InputStreamReader(new FileInputStream(fileName));
            // 读入多个字符到字符数组中,charread为一次读取字符数
            while ((charread = reader.read(tempchars)) != -1) {
                // 同样屏蔽掉\r不显示
                if ((charread == tempchars.length)
                        && (tempchars[tempchars.length - 1] != '\r')) {
                    System.out.print(tempchars);
                } else {
                    for (int i = 0; i < charread; i++) {
                        if (tempchars[i] == '\r') {
                            continue;
                        } else {
                            System.out.print(tempchars[i]);
                        }
                    }
                }
            }

        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     */
    public static void readFileByLines(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                System.out.println("line " + line + ": " + tempString);
                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 随机读取文件内容
     */
    public static void readFileByRandomAccess(String fileName) {
        RandomAccessFile randomFile = null;
        try {
            System.out.println("随机读取一段文件内容:");
            // 打开一个随机访问文件流,按只读方式
            randomFile = new RandomAccessFile(fileName, "r");
            // 文件长度,字节数
            long fileLength = randomFile.length();
            // 读文件的起始位置
            int beginIndex = (fileLength > 4) ? 4 : 0;
            // 将读文件的开始位置移到beginIndex位置。
            randomFile.seek(beginIndex);
            byte[] bytes = new byte[10];
            int byteread = 0;
            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
            // 将一次读取的字节数赋给byteread
            while ((byteread = randomFile.read(bytes)) != -1) {
                System.out.write(bytes, 0, byteread);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (randomFile != null) {
                try {
                    randomFile.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 显示输入流中还剩的字节数
     */
    private static void showAvailableBytes(InputStream in) {
        try {
            System.out.println("当前字节输入流中的字节数为:" + in.available());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String fileName = "I:/test/g127-s545.TXT";
       // ReadFromFile.readFileByBytes(fileName);
       // ReadFromFile.readFileByChars(fileName);
        //ReadFromFile.readFileByLines(fileName);
        ReadFromFile.readFileByRandomAccess(fileName);
    }
}
分享到:
评论

相关推荐

    java file,java读取txt文档

    在这个例子中,我们首先创建一个`File`对象,然后使用`FileReader`打开这个文件。`BufferedReader`通过`FileReader`创建,增加了一个缓冲区,提高了读取效率。`readLine()`方法被用来逐行读取文件内容,直到文件结束...

    java file 文件操作例子

    在Java编程语言中,文件操作是一项基础且至关重要的任务,涉及到读取、写入、创建、删除、重命名等操作。`java.io.File`类是Java标准库中的核心类,用于处理磁盘上的文件和目录。这个类不仅提供了对文件的基本操作,...

    java读取mpp文件

    `mpxj`是一个开源的Java库,专门用于读取和写入Microsoft Project文件,包括MPP格式。这个库提供了丰富的API,使得开发者可以在Java应用中方便地操作这些项目管理文件。 首先,让我们详细了解一下如何在Java中使用`...

    java读取excel简单例子

    jxl是一个流行的、免费的Java库,用于读取和写入Microsoft Excel格式的文件。在这个简单的例子中,我们将探讨如何使用jxl.jar来读取Excel数据,这对于初学者来说是一个很好的起点。 首先,你需要将jxl.jar添加到你...

    java实现下载例子

    这个例子展示了如何使用Java和JSP(JavaServer Pages)技术来创建一个简单的文件下载服务。以下是对给定代码的详细解释: 1. **字符编码转换**: 在处理中文文件名时,需要考虑字符编码的问题。在`toUtf8String()`...

    java 创建和读取PDF例子

    在Java编程环境中,创建和读取PDF文档是常见的任务,特别是在处理报告、发票或文档自动化时。PDF(Portable Document Format)是一种广泛使用的文件格式,它能够保持文档的原始布局和格式,无论在哪种设备上查看。...

    java 读取doc docx txt 文件例子

    在Java编程中,读取和处理文档是常见的需求,尤其是doc、docx和txt格式的文件,这些都是办公环境中广泛使用的文本文件格式。本示例主要介绍如何使用Java的Apache POI库来处理Microsoft Office的doc和docx文件,以及...

    java读取win共享文件夹

    在Java编程环境中,读取Windows共享文件夹的内容并将其保存到本地是一项常见的任务,尤其在分布式系统或跨平台协作中。下面将详细讲解如何通过Java实现这一功能,以及涉及的相关知识点。 首先,Java中没有内置的...

    java File文件处理工具类

    总的来说,Java的`File`类提供了丰富的文件和目录操作接口,使得开发者能够方便地进行文件的创建、读写、复制和删除等操作。结合`FileUtils`这样的辅助工具类,我们可以编写出更简洁、易维护的代码。在实际开发中,...

    完美解决java读取excel内存溢出问题.rar

    总结来说,解决Java读取Excel内存溢出问题,关键在于合理利用资源、优化代码逻辑以及选择适合的API,如Apache POI的SXSSF。通过这些方法,我们可以在不显著增加系统资源负担的情况下,高效地处理大Excel文件。

    java上传并读取excel工具类

    本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页的技巧。 首先,我们需要了解Java中处理Excel的库。Apache POI是一个广泛使用的开源库,它提供了API...

    java读取txt文档的

    根据提供的文件信息,我们可以总结出以下关于Java读取TXT文档的知识点: ### 一、导入必要的包 在Java中读取文件之前,首先需要导入一些必要的包,这些包提供了处理文件的基本工具。在这个例子中,涉及到的包有: ...

    一个文件的读写例子

    在这个“一个文件的读写例子”中,我们将深入探讨如何在Python中实现这一功能,因为Python的File IO操作简洁易懂。 1. **打开文件**:首先,我们需要使用内置的`open()`函数打开文件。这个函数接受两个参数:文件名...

    java zip 压缩解压例子

    Java的Zip压缩和解压是Java IO和Java Archive(JAR)库中的一部分,用于处理.zip格式的文件。在Java中,我们可以使用`java.util.zip`包中的类,如`ZipOutputStream`和`ZipInputStream`来实现文件或目录的压缩与解压...

    flink-java-本地例子

    在本教程中,我们将深入探讨"flink-java-本地例子"这一主题,它涉及Apache Flink的Java API以及如何在本地环境中运行Flink程序。Apache Flink是一个强大的开源流处理和批处理框架,广泛用于实时数据处理。我们将讨论...

    java web download file

    在这个例子中,我们打开文件,然后读取并写入到响应的输出流中。注意处理好异常,确保在出现错误时能够优雅地关闭资源。 除了直接从服务器磁盘提供文件下载,还可以将文件存储在数据库中或者使用云存储服务。在这种...

    Java基础的例子 练习题(著名的于慧峰老师的总结)

    6. **文件和输入/输出**:Java提供了丰富的I/O流类库,用于读写文件、网络通信和其他数据源。例如,File类用于文件操作,InputStream和OutputStream用于字节流处理,而Reader和Writer则处理字符流。 7. **集合框架*...

    Java_file_send.rar_java sendfile

    在Java编程环境中,文件传输是一项常见的任务,尤其是在网络...在`Java_file_send`这个例子中,我们可以学习到如何将这些概念应用于实际的代码实现。不过,具体代码细节和实现方式,需要解压压缩包并查看源码才能得知。

    JAVA代码大全的例子

    在文件I/O操作上,Java提供了丰富的API,如File类、InputStream/OutputStream流和Reader/Writer类。你可以通过这些示例了解如何读写文件、复制文件或处理目录。 线程是Java的一个重要特性,让你能够编写并发程序。...

    100个Java经典例子

    在Java编程语言的世界里,掌握一系列经典例子是提升技能的关键步骤。"100个Java经典例子"这个资源集合提供了一条深入理解Java语言的有效途径,尤其适合初学者。通过这些例子,你可以从基础到进阶,逐步了解并熟练...

Global site tag (gtag.js) - Google Analytics