首页 > 编程语言 >Java流(Stream)、文件(File)和IO

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

时间:2023-10-13 14:56:02浏览次数:50  
标签:Java 读取 IO System BufferedReader IOException File 控制台 输入

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

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

  • java.io包几乎包含了所有操作输入、输出需要的类
    • 所有这些流类流类代表了输入源和输出目标
  • Java.io包中的流支持很多种格式
    • 比如:基本类型、对象、本地化字符集等等
  • 一个流可以理解为一个数据的序列
    • 输入流表示从一个源读取数据
    • 输出流表示向一个目标写数据
  • Java为I/o提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程

读取控制台输入

  • Java的控制台输入由System.in完成

    • 为了获得一个绑定到控制台的字符流,可以把System.in包装在一个BufferedReader对象中来创建一个字符流

      • 创建BufferedReader的基本语法:

        BufferedReader br = new BufferedReader(new  InputStreamReader(System.in));
        
        • BufferedReader 对象创建后,可以使用read() 方法从控制台读取一个字符或者用readLine() 方法读取一个字符串

从控制台读取多字符输入

  • 从BufferedReader对象读取一个字符要使用read() 方法

    • 语法: int read throws IOException

      • 每次调用read() 方法,从输入流读取一个字符并把该字符作为整数值返回

      • 当流结束的时候返回-1

      • 该方法抛出IOException

    • 使用BufferedReader 在控制台读取字符 例子

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

从控制台读取字符串

  • 从标准输入读取一个字符串需要使用BufferedReader的reaLine()方法

    • 语法:String readLine() throws IOException

      使用BufferedReader 在控制台读取字符 例子
      //使用BufferedReader在控制台读取字符
      impor  java.io.*;
      public class BRReadLines{
      public static void main(String[] args)  throws IOException{
      //使用System.in 创建BufferedReader
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
      String str;
      System.out.println(“Enter lines of text.”);
      System.out.println(“Enter ‘end’ to quit.”);
      do{
      Str = br.readLine();
      System.out.println(str);
      }while(!str.equals(“end”));                                                                                                                                         
      }
      }     
      

控制台输出

  • 控制台的输出由 print() 和 println() 完成

    • 这些方法都由类PrintStream定义
    • System.out是该对象的一个引用
  • PrintStream继承了OutputStream类,并且实现了方法write();Write()也可以用来往控制台写操作

    • PrintStream定义write()的最简单格式:

      • Void write(int byteval)

        • 该方法将byteval的低八位字节写到流中

        • 实例:用write()把字符”A”和紧跟着的换行符输出到屏幕:

          import  java.io.*;
          //演示System.out.write()
          public class WriteDemo{
          public static void main(String [] args){
          int b;
          b = ‘A’;
          System.out.write(b);
          System.out.write(‘\n’);
          }
          }
          

读写文件

  • 一个流被定义一个数据序列
    • 输入流用于从源读取数据
    • 输出流用于向目标写数据
  • 两个重要的流FilelnputStream和FileOutputStream

FilelnputStream

  • 该流用于从文件读取数据,FilelnputStream的对象可以用关键字new来创建

  • 有多种构造方法可用来创建对象

    • 可以使用字符串类型的文件名来创建一个输入流对象来读取文件

      InputStream  f =new FileInputStream(“C:/java/hello”);
      
    • 也可以使用一个文件对象来创建一个输入流对象来读取文件

    • 首先得使用File()方法来创建一个文件对象

      File  f  = new File(“C:/java/hello”);
      InputStream  in = new FileInputStream(f); 
      
  • public void close() throws IOException{}

    • 关闭此文件输入流并释放与此流有关的所有系统资源
    • 抛出IOException异常
  • protected void finalize() throws IOException{}

    • 方法清除与该文件的连接
    • 确保在不再引用文件输入流时调用其close方法
    • 抛出IOException异常
  • public int read(int r) throws IOException{}

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

    • 这个方法从输入流读取r.length长度的字节
    • 返回读取的字节数
    • 如果是文件结尾则返回-1
  • Public int available() throws IOException{}

    • 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数
    • 返回一个整数值

FileOutputStream

标签:Java,读取,IO,System,BufferedReader,IOException,File,控制台,输入
From: https://www.cnblogs.com/1999LIJIAN/p/17762098.html

相关文章

  • [JavaScript]扩展运算符
    顺便补充一点Array.reduce((prev,curv)=>{}, ori)的运用letarr1=[1,3,5,7,9]letarr2=[2,4,6,8,10]console.log(...arr1);//展开一个数组----->13579letarr3=[...arr1,...arr2]//连接数组//......
  • Java设计模式-策略模式-基于Spring实现
    1、策略模式1.1、概述策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它将算法封装在独立的策略类中,使得它们可以相互替换,而不影响客户端代码。这种模式通过将算法的选择从客户端代码中分离出来,提供了更大的灵活性和可维护性。在Java中,策略模式的设计理念可以通过以......
  • Java多态及类初始化顺序
    多态多态是Java面向对象的三大特性之一,多态建立于封装和继承之上,指对于父类中定义的属性和方法被子类继承后,可以具有不同的数据类型或表现出不同的行为。可分为编译时多态和运行时多态,编译时多态是静态的,通过方法的重载体现,通过编译之后会产生不同的方法;运行时多态通过动态绑定......
  • Abp vNext : ApplicationService 复杂查询
    在Abp的ApplicationService中进行复杂查询示例:publicvirtualasyncTask<PagedResultDto<RawMaterialOutwarehouseRecordWithDetialsDto>>GetRawMaterialOutwarehouseRecordListAsync(GetRawMaterialOutwarehouseRecodsInputinput){var......
  • Desertification in China: Causes and Effects
     Researchshowthatcurrently,27.4%oflandinChinahasundergonedesertification affectingabout400millionpeople. Studiesareincreasinglyfocusingontheeffectsofwidespreaddesertification,whichaffects foodsecurity,people’slivelihoods,an......
  • VMware Workstation安装安卓Android-X86
    原文:VMwareWorkstation安装安卓Android-X86最新版-..Summer-博客园(cnblogs.com) 进到这个页面的人想毕已经知道 Android-X86 是什么东东,有什么用了,这里就不浪费时间啦,不知道的自己百度吧一、准备工作 官网下载地址:https://www.android-x86.org我这里使用最新版a......
  • android studio配置 compileOnly、implementation、api使用
    implementation:作用是编译同时打包,且当前mudule打包的aar或jar,不能被引用当前module的模块引用。api:作用是编译同时打包,且当前mudule打包的aar或jar,能被引用当前module的模块引用。compileOnly:作用是只编译不打包。比如项目中要引用aarA,如果项目中其他模块已经引用打包过了......
  • Java SWT Image 图像 —— 透明度 alpha数组
    对于图像深度是2、4、8的图像,可以指定transparentPixel。对于直接图像,要使用alpha或者alpha数组,alpha值0到255,0表示完全透明的,数值越大表示越是不透明,255表示完全不透明,可以只是设置一个alpha值,作用于所有的像素点,也可以给所有的像素点设置自己的透明的值。 如: 的alpha的数组值为......
  • Java SWT Image 图像 —— mask
    原文链接:http://www.eclipse.org/articles/Article-SWT-images/graphics-resources.htmlPaletteDatapaletteData=newPaletteData(newRGB[]{newRGB(0,0,0),newRGB(255,255,255)});ImageDatasourceData=newImageData(32,32,1,paletteData);ImageDatamaskData=......
  • Java SWT Image 图像 —— 变灰、变亮变黑、旋转、反色、拉伸、透明叠加
    图像变灰图像变灰在桌面应用程序中有着广泛的应用。例如,一个图标被作为一个按钮的背景,我们需要一个灰色效果的图标作为按钮的背景来表示这个按钮处于禁用状态。在SWT中,基于已经存在的图像来创建一个具有灰色效果的图像,我们可以使用构造函数Image(Displaydisplay,Imageimage,in......