点击上方蓝色“小白轻松学编程”,添加“关注”

(*平遥古城,图片来源于网络)

文章目录

1 前言2 流3 字节流4 字符流5 标准流6 读取文件7 File和I/O操作8 Java中的目录

1 前言

Java中java.io包几乎包含了所有我们需要用到的和输入输出(Input和Output, 即I/O)操作相关的类。所有这些输入输出操作都包含了输入流和输出流,java.io包中的流支持很多类型的数据,例如基础数据类型、对象和各地语言字符等等。

2 流

流(stream)可以定义为一序列的数据。流可以分为两种:

  • 输入流InputStream - InputStream可以用来从数据源读取数据。

  • 输出流OutputStream - OutputStream可以用来将数据写入文件。

Java为与文件和网络相关的I/O提供了强大而灵活的支持,不过本教程只涵盖了与流和I/O相关的基本的功能。我们来逐一学习常用的几种I/O操作。

3 字节流

Java字节流被用于操作8比特位字节的输入和输出。尽管有很多类都与字节流相关,但最常用的是FileInputStream和FileOutputStream。下面程序使用了这两个类来将输入文件复制到输出文件中。

程序实例

import java.io.*;public class CopyFile {   public static void main(String args[]) throws IOException {        FileInputStream in = null;      FileOutputStream out = null;      try {         in = new FileInputStream("input.txt");         out = new FileOutputStream("output.txt");         int c;         while ((c = in.read()) != -1) {            out.write(c);         }      }finally {         if (in != null) {            in.close();         }         if (out != null) {            out.close();         }      }   }}

假如input.txt文件的内容为:

This is test for copy file.

接着,编译上面的程序然后执行,执行完成后会程序会创建一个output.txt文件,这个文件的内容和input.txt一样。我们只需要创建一个CopyFile.java文件,将上面代码复制到这个文件里,然后执行下面的命令语句:

javac CopyFile.javajava CopyFile.java

4 字符流

Java字节流用于处理8比特位字节的输入和输出,而Java字符流用于处理16比特位unicode的输入和输出。尽管有很多类与字符流相关,但最常用的是FileReader和FileWriter类。虽然从底层实现上来看,FileReader类使用的是FileInputStream类,而FileWriter使用的是FileOutPutStream类,但是两者主要的差别是FileReader每次读两个字节,而FileWriter每次写两个字节。我们可以将上面复制输入文件的程序实例改写为FileReader和FileWriter来实现。

程序实例

import java.io.*;public class CopyFile {   public static void main(String args[]) throws IOException {      FileReader in = null;      FileWriter out = null;      try {         in = new FileReader("input.txt");         out = new FileWriter("output.txt");         int c;         while ((c = in.read()) != -1) {            out.write(c);         }      }finally {         if (in != null) {            in.close();         }         if (out != null) {            out.close();         }      }   }}

input.txt文件的内容为:

This is test for copy file.

编译上面的程序然后执行,执行完成后会程序会创建一个output.txt文件,这个文件的内容和input.txt一样。我们只需要创建一个CopyFile.java文件,将上面代码复制到这个文件里,然后执行下面的命令语句:

javac CopyFile.javajava CopyFile.java

5 标准流

所有的编程语言都提供标准的I/O,用户的程序可以使用标准I/O流来从键盘输入、从电脑屏幕输出。如果你了解C或C++语言的话,那你一定知道有3个标准的输入输出:STDIN、STDOUT和STDERR。与其相似,Java也提供3中标准流:

  • 标准输入流 - 用于将数据馈送到用户程序,通常将键盘用作标准输入流,其调用为System.in。

  • 标准输出流 - 用于将输出用户程序产生的数据,通常是使用电脑屏幕来展示标准输出流,其调用为System.out。

  • 标准错误流 - 用于输出用户程序产生的错误数据,通常是使用电脑屏幕来展示标准错误流,其调用为System.err。

下面是一个简单的程序,创建了InputStreamReader类的对象来读取标准输入流数据,直到用户按“q”键。

程序实例

import java.io.*;public class ReadConsole {   public static void main(String args[]) throws IOException {      InputStreamReader cin = null;      try {         cin = new InputStreamReader(System.in);         System.out.println("Enter characters, 'q' to quit.");         char c;         do {            c = (char) cin.read();            System.out.print(c);         } while(c != 'q');      }finally {         if (cin != null) {            cin.close();         }      }   }}

我们创建一个ReadConsole.java文件,并将上面代码复制到文件中,编译然后执行程序。程序会持续读取键盘按下的字符,然后字符输出到屏幕上,直到按下“q”键。

$javac ReadConsole.java$java ReadConsoleEnter characters, 'q' to quit.11eeqq

6 读取文件

如前文所述,流(stream)可以被定义为一序列的数据。InputStream用于从文件读取数据,OutputStream用于将数据写入目标文件。下图是Java中用于处理输入输出流的类及层次。

其中,两个重要的处理流的类是FileInputStream和FileOutputStream,下文将会对这两个类进行介绍。

6.1 FileInputStream

FileInputStream类用来从文件读取数据。FileInputStream类的对象可以使用new关键字来创建,有多个构造器可供使用。
下面语句使用文件名作为构造器参数来创建对象读取文件:

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

下面语句首先创建了一个File文件,然后将文件作为构造器参数来创建FileInputStream对象读取文件:

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

一旦获得了输入流对象,我们就可以通过一系列方法来读取流或做其它操作。

序号 方法 & 描述
1 public void close() throws IOException{}
用于关闭文件输入流。
2 protected void finalize() throws IOException {}
用于清空文件的连接。
3 public int read(int r) throws IOException{}
从输入流读取指定字节长度的数据。
4 public int read(byte[] r) throws IOException{}
从输入流读取r.length()长度的字节到数组中。
5 public int available() throws IOException{}
返回可以从输入流中读取字节的长度。

除了FileInputStream类之外,Java还提供了其它有用的类来处理输入流:

  • ByteArrayInputStream

  • DataInputStream

6.2 FileOutputStream

FileOutputStream用来将数据写入创建的文件中。如果在写入文件之前文件不存在的话,输出流会打开文件之前创建该文件。和FileInputStream一样,FileOutputStream也可以通过下面两种方式创建对象。
首先是,使用文件名作为构造器参数来创建流对象:

OutputStream f = new FileOutputStream("C:/java/hello");

其次是,先创建一个File文件对象,然后将File对象作为参数传入FileOutputStream流对象。

File f = new File("C:/java/hello");OutputStream f = new FileOutputStream(f);

一旦获得了输出流对象,我们就可以通过一系列方法来将数据写入流或做其它操作。

序号 方法 & 描述
1 public void close() throws IOException{}
用于关闭文件输出流。
2 protected void finalize() throws IOException{}
用于清空文件的连接。
3 public void write(int w) throws IOException{}
将指定长度的字节写入输出流。
4 public void write(byte[] w)
将w.length()长度的字节数组写入输出流。

除了FileOutputStream类之外,Java还提供了其它有用的类来处理输出流:

  • ByteArrayOutputStream
  • DataOutputStream

程序实例

下面程序展示了如何使用操作输入流和输出流。

import java.io.*;public class fileStreamTest {   public static void main(String args[]) {      try {         byte bWrite [] = {11,21,3,40,5};         OutputStream os = new FileOutputStream("test.txt");         for(int x = 0; x < bWrite.length ; x++) {            os.write( bWrite[x] );   // writes the bytes         }         os.close();         InputStream is = new FileInputStream("test.txt");         int size = is.available();         for(int i = 0; i < size; i++) {            System.out.print((char)is.read() + "  ");         }         is.close();      } catch (IOException e) {         System.out.print("Exception");      }     }}

上面的程序代码会创建一个test.txt文件,并将给定的数字以二进制形式写入文件,控制台中输出的和文件中的内容相同。

7 File类和I/O操作

我们可以使用下面几个类来进行文件和I/O操作:

  • File类
  • FileReader类
  • FileWriter类

8 Java中的目录

目录本质上也是文件,是可以存放其它文件和目录的文件。我们可以使用File对象来创建目录、列出目录中的文件。有关完整的详细信息,可以查看File对象所有能调用的方法以及和目录相关的方法。

8.1 创建目录

File类提供两个很实用的方法来创建目录:

  • mkdir()方法,创建目录成功时返回true,否则返回false。创建目录失败意味着指定的路径已存在,或者目录设定的路径不完整。

  • mkdirs()方法,创建指定目录,并创建所有的父级目录。

下面的程序创建了“/tmp/user/java/bin”目录。

import java.io.File;public class CreateDir {   public static void main(String args[]) {      String dirname = "/tmp/user/java/bin";      File d = new File(dirname);      //创建目录      d.mkdirs();   }}

编译上面的程序就可以创建“/tmp/user/java/bin”目录。 **注意** :Java按约定自动在UNIX和Windows系统上处理路径分隔符。如果在Windows系统上使用正斜杠(/),路径仍将正确解析。

8.2 列举目录

我们可以使用File对象的list()方法来列举目录中包含的所有文件和目录,如下面程序所示:

import java.io.File;public class ReadDir {   public static void main(String[] args) {      File file = null;      String[] paths;      try {               //创建文件对象         file = new File("/tmp");         //文件名和目录名赋给数组         paths = file.list();         //遍历paths数组         for(String path:paths) {            //打印文件名和目录名            System.out.println(path);         }      } catch (Exception e) {         //出现错误时打印错误信息         e.printStackTrace();      }   }}

程序运行后会输出/tmp目录下的所有文件和目录:

test1.txttest2.txtReadDir.javaReadDir.class

—— E N D ——

小白轻松学编程

ID : xyuncoder

学习编程可以如此轻松!

如果觉得文章对你有用,

点击【在看】鼓励一下吧↓↓↓

.rpt文件内容读取java_Java快速入门(26) 文件和IO操作相关推荐

  1. .rpt文件内容读取java_Java 中读取文件内容的 n 中方式

    前言 刚接触 java 的时候很困惑一个事情 File相对路径,以哪个目录为参照物. 随着 io 模型的发展,java 1.7 的 nio,使用 Path.Paths 和 Files 等来方便 io ...

  2. .rpt文件内容读取java_linux第二天|shell文件/文件夹操作

    shell 文件/文件夹的命令 文件的操作可以分为:新建,移动,复制,删除,读取. 文件夹的操作可以分为:创建,删除,复制,移动. 这两者有部分命令是相通的,为了减少记忆的负担,这里只说一种能够共用的 ...

  3. 读取远程服务器上文件内容,读取远程服务器上的文件

    读取远程服务器上的文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JDK 8 ...

  4. Easy-RSA 3快速入门自述文件

    Easy-RSA 3快速入门自述文件 这是使用Easy-RSA版本3的快速入门指南.运行./easyrsa -h可以找到有关使用和特定命令的详细帮助.可以在doc /目录中找到其他文档. 如果您从Ea ...

  5. python读取大文件内容_Python模块linecache处理大文件

    linecache模块简介 Python处理大文件需要用到Linecache模块. linecache模块的作用是将文件内容读取到内存中,进行缓存,而不是每次都要从硬盘中读取,这样效率提高很多,又省去 ...

  6. Shell sed命令,替换文件内容、替换目录下所有文件内容、读取文件内容

    目录 替换文件内容 格式: 实例:将文件内的34:51替换为11:22 替换目录下所有文件内容 格式: 实例: 替换当前目录下内容有aaa的替换为bbb 读取文件内容 替换文件内容 格式: sed - ...

  7. Python文件内容读取成绩单,计算出平均分并且写入原文件存储

    python文件内容读取成绩单,计算出平均分并且写入原文件存储 文件内容如下:( 格式参考下表, 内容自己定义) 姓名 语文 数学 英语 aaa 80 70 65 bbb 85 88 90 ccc 7 ...

  8. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

  9. linux如何改文件内容,linux下用命令修改文件内容

    linux下vi命令修改文件及保存的使用方法 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi n filename :打开文件,并将光标置于第n行首 vi fil ...

最新文章

  1. 职责链模式里面必须要知道的事情
  2. java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)
  3. Visual Studio 2019连接自动的Sql Server开发版数据库(C#语言)
  4. c#程序设计语言杜松江版_当前最流行的10款编程语言,你会哪种?
  5. 窗口分析函数_16_找出最后一个元素
  6. hunnu---11547 你的组合数学学得如何?
  7. java boxplot_java – 具有多个类别的Boxplots的JFreeChart缩放
  8. soap rest_这是我对REST的后续工作,是新的SOAP:让我们谈谈原始REST
  9. 苹果延期中国零售商店的重新开业时间 线上商店依旧正常工作
  10. 清理300多台MySQL数据库的过期binlog日志
  11. 安装软件提示计算机管理员权限,win10安装软件需要管理员权限的处理办法|win10装软件提示error launching installer如何处理?...
  12. PLC1200通过CB1241RS485通讯走modbus rtu连接昆仑通态
  13. 如何区分电梯卡为id卡ic卡_如何分辨IC卡和ID卡
  14. 253短信发送(国内短信)
  15. ADSL拨号密码如何修改?
  16. [导入]WAP广告钱景一致看好 现PUSH模式受质疑
  17. 大数据对人们的好处_大数据给人们生活带来哪些好处?
  18. Android布局文件中的xmlns:tools作用以及用法
  19. 假如有人把支付宝存储服务器炸了
  20. MCD19A2 MAIAC AOD 数据处理(三)均值+同日镶嵌+重投影(Grid转经纬度)

热门文章

  1. sql server management studio快捷键
  2. Hibernate中的sql的所有的查询
  3. 安装提示没有安装包docker(转载)
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游网站系统
  5. java封装数组_Java封装数组之动态数组实现方法详解
  6. 常用的C#正则表达式! [转]
  7. electron 前端开发桌面应用
  8. python第十八天
  9. [Linux] LD_LIBRARY_PATH
  10. 注意cache同时过期问题