Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法

这篇具有很好参考价值的文章主要介绍了Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java 流(Stream)、文件(File)和IO

java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

读取控制台输入

//使用 BufferedReader 在控制台读取字符
 
import java.io.*;
 
public class BRRead {
    public static void main(String[] args) throws IOException {
        char c;
        // 使用 System.in 创建 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入字符, 按下 'q' 键退出。");
        // 读取字符
        do {
            c = (char) br.read();
            System.out.println(c);
        } while (c != 'q');
    }
}

读写文件

FileInputStream

该流用于从文件读取数据

InputStream f = new FileInputStream("C:/java/hello");

使用以下方法来读取流或者进行其他的流操作

  1. public void close() throws IOException{} 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

  2. protected void finalize()throws IOException {} 这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。

  3. public int read(int r)throws IOException{} 这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。

  4. public int read(byte[] r) throws IOException{}
    这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。

  5. public int available() throws IOException{} 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

FileOutputStream

创建一个文件并向文件中写数据。文件不存在,则创建。

OutputStream f = new FileOutputStream("C:/java/hello")
  1. public void close() throws IOException{}
    关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

  2. protected void finalize()throws IOException {}
    这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。

  3. public void write(int w)throws IOException{} 这个方法把指定的字节写到输出流中。

  4. public void write(byte[] w) 把指定数组中w.length长度的字节写到OutputStream中。

文件操作代码参考

Java目录

创建目录

mkdir()方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。

mkdirs()方法创建一个文件夹和它的所有父文件夹。

读取目录

一个目录其实就是一个 File 对象,它包含其他文件和文件夹。

如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true

使用 list() 方法来检查一个文件夹中包含的内容:

import java.io.File;
 
public class DirList {
    public static void main(String args[]) {
        String dirname = "/tmp";
        File f1 = new File(dirname);
        if (f1.isDirectory()) {
            System.out.println("目录 " + dirname);
            String s[] = f1.list();
            for (int i = 0; i < s.length; i++) {
                File f = new File(dirname + "/" + s[i]);
                if (f.isDirectory()) {
                    System.out.println(s[i] + " 是一个目录");
                } else {
                    System.out.println(s[i] + " 是一个文件");
                }
            }
        } else {
            System.out.println(dirname + " 不是一个目录");
        }
    }
}

删除目录或文件

删除文件可以使用 java.io.File.delete() 方法。

当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。

import java.io.File;
 
public class DeleteFileDemo {
    public static void main(String[] args) {
        // 这里修改为自己的测试目录
        File folder = new File("/tmp/java/");
        deleteFolder(folder);
    }
 
    // 删除文件及目录
    public static void deleteFolder(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteFolder(f);
                } else {
                    f.delete();
                }
            }
        }
        folder.delete();
    }
}

Java 异常处理

异常发生的原因
用户输入了非法数据。
要打开的文件不存在。
网络通信时连接中断,或者JVM内存溢出。

Java 的非检查性异常
Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法,java,编程语言,java,开发语言
检查性异常类

Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法,java,编程语言,java,开发语言
异常方法

  1. public String getMessage() 返回关于发生的异常的详细信息。这个消息在Throwable
    类的构造函数中初始化了。

  2. public Throwable getCause() 返回一个 Throwable 对象代表异常原因。

  3. public String toString() 返回此 Throwable 的简短描述。

  4. public void printStackTrace() 将此 Throwable 及其回溯打印到标准错误流。

  5. public StackTraceElement [] getStackTrace()
    返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。

  6. public Throwable fillInStackTrace() 用当前的调用栈层次填充Throwable
    对象栈层次,添加到栈层次任何先前信息中。

捕获异常

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方;
Catch语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。

finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

throws/throw 关键字

throw 关键字用于在代码中抛出异常;
throws 关键字用于在方法声明中指定可能会抛出的异常类型。可以声明抛出多个异常;

public void readFile(String filePath) throws IOExceptionRemoteException,InsufficientFundsException {
  BufferedReader reader = new BufferedReader(new FileReader(filePath));
  String line = reader.readLine();
  while (line != null) {
    System.out.println(line);
    line = reader.readLine();
    if (line == 0) {
       throw new IllegalArgumentException("Number must be positive");
    }
  }
  reader.close();
}

try-with-resources(可查阅详细内容进行了解)
JDK7 之后,Java 新增的 try-with-resource 语法糖来打开资源,并且可以在语句执行完毕后确保每个资源都被自动关闭 。

声明自定义异常

所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

通用异常

JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。
程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException类,IllegalStateException 类。

在这里欢迎大家的点赞、关注、评论,以此来促进大家互相学习交流,同时可以让新加入的小伙伴更快的了解新知识!!!

以上内容如有侵权,请联系作者进行删除

≧◠◡◠≦ 1分2分都是爱,感谢已经打赏的老板,和正在打赏的老板们 ≧◠◡◠≦文章来源地址https://www.toymoban.com/news/detail-681698.html

到了这里,关于Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 文件未找到异常 [java.io.FileNotFoundException

    文件未找到异常 [java.io.FileNotFoundException 【解决文件丢失问题:深入了解Java.io.FileNotFoundException异常的原因和解决方案】 引言: 当您在编写Java应用程序时,可能会遇到一个常见的异常,即文件未找到异常(java.io.FileNotFoundException)。这个异常表示您的程序无法找到所需的文件

    2024年02月09日
    浏览(47)
  • 使用hive查看orc文件 orcfiledump命令详解 异常处理(Failed to read ORC file)

    列式存储以orc和parquet文件居多,现阶段hive数据存储的主流格式是orc,然后结合presto(目前对orc的支持好于parquet)做一些即席查询。hive数据文件是直接存储在hdfs上,但是hadoop貌似没有提供直接查看文本的命令,好在hive提供了支持。 1. 命令帮助: hive --service orcfiledump --help 2. 数

    2024年02月16日
    浏览(42)
  • Android 创建文件时出现 java.io.IOException: Operation not permitted异常

    一、android 6.0         6.0之前是不需要动态申请权限的,直接在 manifest.xml 中申请即可以正常使用。 二、安卓10,SDK=29         安卓10开始,安卓继续加强了限制,如果需要读写SD卡,还需要额外的进行申请requestLegacyExternalStorage申明。 三、安卓11,SDK=30         安卓

    2024年02月02日
    浏览(46)
  • 【Stream流】java中Stream流详细使用方法

    在Java中, Stream 是一种用于处理集合数据的流式操作API。它提供了一种简洁、灵活、高效的方式来对集合进行各种操作,如过滤、映射、排序等。下面是一些 Stream 的常用功能和详细的代码示例: 创建流: 从集合创建流: stream() 方法可以从集合创建一个流。 从数组创建流:

    2024年02月07日
    浏览(54)
  • Failed to parse multipart servlet request; nested exception is java.io.IOException,文件上传异常的问题如何解决

    背景: 有时候我们上传文件时会遇到这种报错, \\\"Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\\\\Users\\\\XXXX\\\\AppData\\\\Local\\\\Temp\\\\tomcat.2460390372185321891.8082\\\\work\\\\Tomcat\\\\localhost\\\\ROOT] is not valid\\\"。 导致上传文件失败。 原因: 这种问题出现的原

    2024年02月03日
    浏览(44)
  • elasticsearch 安装 IK 中文分词器插件提示找不到文件的异常(Exception in thread “main“ java.nio.file.NoSuchFileException)

    错误截图 在命令行窗口,执行如下命令安装 IK 中文分词器 失败。 错误日志 1、自己到github下载对应版本的ik中文分词器 上面命令中两个插件版本号应该和 Elasticsearch 的版本保持一致,我现在用的是 7.14.1 版本。 首先版本和命令是对得上的。 命令行窗口通过命令下载失败的话

    2024年04月11日
    浏览(55)
  • <JavaEE> 文件IO -- File类和文件操作

    目录 一、文件的概念 二、文件系统 三、文件类型 四、使用 File 类进行文件操作 4.1 File 类中的 pathSeparator 属性 4.2 File 类构造方法 4.3 File 类常用方法 什么是文件? 广义上的“文件”是指抽象化的操作系统中的硬件设备和软件资源,目的是对这些“文件”进行同一的管理。

    2024年02月04日
    浏览(45)
  • Java Stream API的基本使用方法

    Java各个版本所更新的主要内容: 1.Java SE 8:引入了一些新特性,如lambda表达式、Stream API、格式化日期、国际化等。此外,还对并发编程进行了改进,引入了线程安全的 Stream API 。 2.Java SE 9:新增了分布式架构的支持,引入了CompletableFuture、ZK等新特性。此外,还对Jit编译器进

    2024年02月03日
    浏览(48)
  • Java File类和IO流

    目录 1. File类 1.1 File对象创建 1.2 File判断和获取方法 1.3 创建和删除方法 1.4 遍历文件夹 2. 字符集 2.1 ASCII字符集 2.2 GBK字符集 2.3 Unicode字符集 2.4 UTF-8 2.5 字符集小结 2.6 编码和解码 3. IO流(字节流) 3.1 IO流概述 3.2 FileInputStream 3.3 FileOutputStream  3.4 FileReader 3.5 FileWriter 3.6 缓冲流

    2024年02月09日
    浏览(36)
  • 【Java 基础】File & IO流

    java.io.File类是文件和目录路径名的抽象表示形式,主要用于文件和目录的创建、查找和删除等操作。 File:它是文件和目录路径名的抽象表示 文件和目录可以通过File封装成对象 File封装的对象仅仅是一个路径名。它可以是存在的,也可以是不存在的。 | 方法名 | 说明 | | —

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包