0

0

Java实现的文件读写技巧和应用

王林

王林

发布时间:2023-06-18 08:34:37

|

2117人浏览过

|

来源于php中文网

原创

java是一种高级编程语言,拥有非常强大的文件读写功能。在这篇文章中,我们将介绍java文件读写的技巧和应用。

一、Java文件读写基础

1.1 读取文件

Java中最常用读取文件的方法是使用BufferedReader类。下面是一个简单的例子:

try{
    BufferedReader br = new BufferedReader(new FileReader("input.txt"));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个BufferedReader对象,该对象使用FileReader类读取了input.txt文件。然后我们读取文件中的每一行并将其打印到控制台上。

立即学习Java免费学习笔记(深入)”;

1.2 写入文件

Java中最常用的写入文件的方法是使用PrintWriter类。下面是一个简单的例子:

try{
    PrintWriter pw = new PrintWriter("output.txt");
    pw.println("Hello, world!");
    pw.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个PrintWriter对象,该对象会将输出写入到output.txt文件中。然后我们向文件中写入一行“Hello, world!”字符串,最后关闭PrintWriter对象。

1.3 二进制文件读写

除了文本文件,Java还可以读写二进制文件。下面是一个简单的例子:

try{
    FileInputStream fis = new FileInputStream("input.bin");
    int data = fis.read();
    while (data != -1) {
        System.out.println(data);
        data = fis.read();
    }
    fis.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个FileInputStream对象,该对象使用二进制模式打开了input.bin文件。然后我们使用单个字节一个字节地读取文件中的数据,并将其打印到控制台上。最后我们关闭了FileInputStream对象。

二、Java文件读写技巧

2.1 文件字符编码

Java中处理文本文件时需要特别注意文件的字符编码。如果文件的编码不是Java默认的UTF-8编码,则需要使用一个合适的编码器来读取或写入该文件。下面是一个读取UTF-16编码文件的例子:

try{
    BufferedReader br = new BufferedReader(new InputStreamReader(
            new FileInputStream("input.txt"), "UTF-16"));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们通过将FileInputStream对象转换为InputStreamReader对象,并指定UTF-16编码器来读取input.txt文件。需要注意的是,使用不正确的编码器读取文本文件可能会产生奇怪的字符或编码错误,因此一定要注意文件的编码。

2.2 大文件读写

B2S商城系统
B2S商城系统

B2S商城系统B2S商城系统是由佳弗网络工作室凭借专业的技术、丰富的电子商务经验在第一时刻为最流行的分享式购物(或体验式购物)推出的开源程序。开发采用PHP+MYSQL数据库,独立编译模板、代码简洁、自由修改、安全高效、数据缓存等技术的应用,使其能在大浏览量的环境下快速稳定运行,切实节约网站成本,提升形象。注意:如果安装后页面打开出现找不到数据库等错误,请删除admin下的runtime文件夹和a

下载

处理大文件时需要特别注意内存占用。如果一次将整个文件读入内存,可能会造成内存泄漏或程序崩溃。因此可以使用Java NIO(New I/O)来逐行读取大文件。下面是一个读取大文件的例子:

try{
    RandomAccessFile raf = new RandomAccessFile("input.txt", "r");
    FileChannel fc = raf.getChannel();
    ByteBuffer buf = ByteBuffer.allocate(1024);
    while (fc.read(buf) != -1) {
        buf.flip();
        byte[] bytes = new byte[buf.limit()];
        buf.get(bytes);
        System.out.print(new String(bytes, Charset.forName("UTF-8")));
        buf.clear();
    }
    fc.close();
    raf.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个RandomAccessFile对象,并使用RandomAccessFile对象创建了一个FileChannel对象。然后我们创建了一个ByteBuffer对象,它的大小为1024字节。接着我们使用FileChannel对象读取数据到ByteBuffer对象中,并利用ByteBuffer对象将数据转换为字节数组,并使用UTF-8编码器将字节数组转换为字符串。最后我们清空ByteBuffer对象,以便下一次读取数据。

2.3 写入大文件

处理大文件时还需要特别注意将文件分割成合适的大小并逐行写入。下面是一个写入大文件的例子:

try{
    PrintWriter pw = new PrintWriter(new File("output.txt"));
    for (int i = 0; i < 1000000; i++) {
        pw.println("Line #" + i);
        if (i % 10000 == 0) {
            pw.flush();
        }
    }
    pw.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个PrintWriter对象,该对象会将输出写入到output.txt文件中。然后我们循环写入1000000行数据,并每隔10000行刷新缓冲区,以便将数据写入到磁盘上。最后我们关闭PrintWriter对象。

三、Java文件读写应用

3.1 文件复制

Java文件读写功能最常用的应用之一就是文件复制。下面是一个简单的文件复制例子:

try{
    FileInputStream fis = new FileInputStream("input.txt");
    FileOutputStream fos = new FileOutputStream("output.txt");
    byte[] buffer = new byte[1024];
    int count;
    while ((count = fis.read(buffer)) != -1) {
        fos.write(buffer, 0, count);
    }
    fis.close();
    fos.close();
} catch(IOException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个FileInputStream对象,用来读取input.txt文件。然后我们创建了一个FileOutputStream对象,用来将数据写入到output.txt文件中。接着我们创建了一个字节数组缓冲区,以便逐块复制文件。最后我们循环读取文件中的每一块数据,并将其写入到输出文件中。

3.2 文件哈希值计算

Java文件读写功能还可以用来计算文件的哈希值(Hash)。下面是一个计算文件哈希值的例子:

try{
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    FileInputStream fis = new FileInputStream("input.txt");
    byte[] buffer = new byte[1024];
    int count;
    while ((count = fis.read(buffer)) != -1) {
        md.update(buffer, 0, count);
    }
    fis.close();
    byte[] digest = md.digest();
    System.out.println(DatatypeConverter.printHexBinary(digest));
} catch(IOException | NoSuchAlgorithmException e){
    e.printStackTrace();
}

这段代码中,我们首先创建了一个MessageDigest对象,使用SHA-256加密算法。然后我们创建了一个FileInputStream对象,用来读取input.txt文件。接着我们创建了一个字节数组缓冲区,并循环读取文件中的每一块数据,将其更新到MessageDigest对象中。最后我们关闭FileInputStream对象,并使用MessageDigest对象计算文件的哈希值,并将计算结果以十六进制字符串的形式输出到控制台上。

结论

Java文件读写功能非常强大,开发者可以灵活运用各种技巧来处理不同的读写需求,如处理文件编码、大文件读写、文件复制和哈希值计算等。因此掌握Java文件读写技巧和应用有助于提高开发效率和代码质量。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

831

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

737

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

733

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16925

2023.08.03

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

10

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.4万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.5万人学习

Django 教程
Django 教程

共28课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号