首页 > 编程语言 >java---------IO流

java---------IO流

时间:2024-02-06 17:55:48浏览次数:27  
标签:java String System IO new --------- out

1.IO流常见应用场景

电脑是人们生活中常见的用品,当你把u盘里面的东西拷贝到你的电脑上,那么这中间涉及到输出和输入的过程,传输过程就像流水一般不停传送资源。这就是电脑读取数据的过程,这就是所谓的输入流

输出流也就是写数据的过程。

2.IO流相关介绍?

  • 什么是IO流?读取和存储数据的解决方案   其中I表示Input   O表示output   流向水一样的流动
  • IO流的作用    用于读写数据  
  • IO流按照流向可以分为哪几种?   可以分为输出流和输入流     输出流:程序------>文件     输入流:文件--------->程序
  • IO流按照操作文件的类型可以分为哪几种?可以分为两种   字节流和字符流    字节流可以操作所有类型的文件     字符流只可以操作文本文件
  • 什么是纯文本文件?    能用记事本打开的文件   比如.md   .txt   lrc  xml等文件

3.IO流体系

 

先介绍FileOutputStream:操作本地文件的字节输入流,可以把程序中的数据写到本地文件中。

 //创建对象    里面可以文件对象   注意一定要保证父级路径
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutputstream.txt");
//写出数据 到文件中会转换成Ascii码 out.write(97); //释放资源 out.close();

        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutput2.txt");
//        out.write(97);
//        out.write(98);
//        out.close();

        //第二种方式 一个数组直接写入
//        byte[] arr1 = {97,98,99,100,101};
//        out.write(arr1);
//        out.close();

        //第三种方式定义其数组长度
        byte[] arr1 = {97,98,99,100,101};
        out.write(arr1,0,2);
        out.close();
  //创建对象  进行换行操作
        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt");
        //写入数据
        String str = "lksnj";
        byte[] bytes = str.getBytes();
        out.write(bytes);
        //换行
        String r = "\r\n";
        byte[] bytes1 = r.getBytes();
        out.write(bytes1);

        String str2 = "666";
        byte[] bytes2 = str2.getBytes();
        out.write(bytes2);
        //关闭资源
        out.close();

//进行续写
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt",true);

输入流:就是读取数据

        
//创建对象 FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); //开始读取数据 int read1 = in.read(); System.out.println((char)read1); int read2 = in.read(); System.out.println(read2); int read3 = in.read(); System.out.println(read3); //关闭资源 in.close();

 1 public class testfor {
 2     public static void main(String[] args) throws IOException {
 3         FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
 4         int b;
 5         while((b=in.read())!=-1){
 6             System.out.println((char)b);
 7         }
 8         in.close();
 9     }
10 }

既然可以读又可以写,那么是不是可以复制粘贴

public static void main(String[] args) throws IOException {
        FileInputStream in =new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\b.txt");
        int b;
        while((b=in.read())!=-1){
            out.write(b);
        }
        out.close();
    }

 

//创建对象
        FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
        //写入数据
        byte[] bytes1= new byte[3];

        int len = in.read(bytes1);
        String s = new String(bytes1,0,len);
        System.out.println("字符串:"+s+"\t长度="+len);

        int len2 = in.read(bytes1);
        String s2 = new String(bytes1,0,len2);
        System.out.println("字符串:"+s2+"\t长度="+len2);

        int len3 = in.read(bytes1);
        String s3 = new String(bytes1,0,len3);
        System.out.println("字符串:"+s3+"\t长度="+len3);
        //释放资源
        in.close();
long start = System.currentTimeMillis();
FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\d.txt");
byte[] bytes = new byte[1024 * 1024 * 5];
int b;
while((b=in.read(bytes))!=-1){
out.write(bytes,0,b);
}
out.close();
in.close();
long end = System.currentTimeMillis();
System.out.println("时间相差:"+(end-start));

 字符乱码

 //编码过程
        String str ="hello world  你好";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));

        byte[] bytes2 = str.getBytes("GBK");
        System.out.println(Arrays.toString(bytes2));

        //解码过程
        String str1 = new String(bytes);
        System.out.println(str1);
        String str2 = new String(bytes,"GBK");
        System.out.println(str2);

 

 

 

 

 //创建对象
        FileReader fr = new FileReader("D:\\work\\java基础\\IO\\chinese2.txt");
        int ch;
        while((ch=fr.read())!=-1){
            System.out.print((char)ch);
        }


char[] chars = new char[2];
while((ch=fr.read(chars))!=-1){
System.out.println(new String(chars,0,ch));
}
 

 

 

        FileWriter fl = new FileWriter("D:\\work\\java基础\\IO\\filewrite.txt");
//        fl.write(97);
        fl.write("我爱中国");
        fl.close();

 

标签:java,String,System,IO,new,---------,out
From: https://www.cnblogs.com/hellotoworld/p/18008224

相关文章

  • java +swagger3项目配置
    1.添加依赖<!--swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></depen......
  • 技术人员核心能力 -- 向上管理能力
    工作了很多年后才真正明白一些道理-在为谁工作?为谁效力?谁在买我们的劳动、时间、技术、能力?有些时候一直学习技术为主、有些时候就忙于一些手上的工作内容、如何让领导满意、如何得到领导认可、需要干哪些事情?平时关键精力应该要放在哪里?如何拿到产出?如何量化汇报?如何......
  • Eralng 学习笔记第九天, 随手记-复习
    1,Erlang的模式匹配和java的多态和方法重载Erlang中的模式匹配和Java中的某些编程方式有相似之处,但它们通常更接近于Java中的多态(polymorphism)和方法重载(methodoverloading)这样的概念。多态(Polymorphism):在Erlang中,函数的模式匹配允许根据不同的参数模式调用不同的函......
  • 无涯教程-Math.log1p(x)函数
    返回1+x的自然对数。Math.log1p(x)-语法Math.log1p(x)x  - 代表数字Math.log1p(x)-示例console.log("---Math.log1p()---")console.log("Math.log1p(Math.E-1):"+Math.log1p(Math.E-1))console.log("Math.log1p(17.5):"+Math.log1......
  • MySQL存储引擎-InnoDB数据页
    MySQL存储引擎-InnoDB数据页MySQL一个数据页默认16kb,MySQL为了不同目的涉及了很多类型的数据页,如undo页、ChangeBuffer页等等。我们这里只关心存放数据的页,即索引(INDEX)页。一个数据页的存储空间大致被划分为7部分,分别为:1、FIleHeader 文件头 38字节2、PageHeader页面......
  • Vue3 - 移动端配置Rem布局
    1、项目搭建2、安装插件npminstallamfe-flexible--savenpminstallpostcss-pxtorem--save-dev3、引入插件import'amfe-flexible'//main.ts4、vite.config.ts配置import{defineConfig}from'vite'importpostCssPxToRemfrom'postcss-pxtore......
  • Oracle~ORA-12505, TNS:listener does not currently know of SID given in connect d
    问题描述ORA-12505,TNS:listenerdoesnotcurrentlyknowofSIDgiveninconnectdescriptorORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID问题原因说明给到的sid有误,很有可能就是服务名和SID混淆使用。首先了解数据库url的写法有两种:(1)监听SID,表示SID......
  • 面试经典:Java中list set map之间的区别
    前言大家好,我是chowley,最近正在复习Java集合,这次来总结一下list、set、map它们三个之间的区别。1.List(列表)定义:List是一种有序集合,允许存储重复元素,每个元素都有一个索引,可以按照插入顺序获取。特点:允许存储重复元素。有序集合,保留元素的插入顺序。可以通过索引访问元素。常见实现......
  • nodejs学习计划--(三)http协议和IP介绍
    一、HTPP协议1、概念HTTP(hypertexttransportprotocol)协议;中文叫超文本传输协议是一种基于TCP/IP的应用层通信协议这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。协议中主要规定了两个方面的内容客户端:用来向服务器发送数据,可以被称之为请求报文服务端......
  • 解决VS Code中使用WSL开发Ruby程序每次打开控制台都需要输入/bin/bash --login的问题
    项目的开发环境是在VSCode上连接WSL开发,使用的语言是Ruby,每次打开控制台都需要先输入/bin/bash--login才能继续输入其他命令,为此,找遍了全网的资料,最终找到了解决的办法,特此记录一下,步骤如下:1.在终端输入vim~/.bashrc回车打开文件2.复制下面的代码粘贴至文件最后[[-s"$HOME/.......