首页 > 编程语言 >java基础-IO流-day13

java基础-IO流-day13

时间:2023-09-21 20:15:53浏览次数:40  
标签:java File System IO day13 println new out

目录

1. IO的概念

计算机内存中的数据 <--> 硬盘里面的数据
也就是数据的落盘 以及 数据的读取

文件的操作

package com.msb.io01;

import java.io.File;
import java.io.IOException;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 20:32
 * @Description: com.msb.io01
 * @version: 1.0
 */
public class Test01 {
    public static void main(String[] args) throws IOException {
        File f = new File("d:"+ File.pathSeparator+"test.txt");
        System.out.println(f.canRead());
        System.out.println(f.canWrite());
        System.out.println(f.getName());
        System.out.println(f.isDirectory());
        System.out.println(f.isFile());
        System.out.println(f.isHidden());
        System.out.println(f.length());
        System.out.println(f.exists());

/*        if(f.exists()){
            f.delete();
        }else{
            f.createNewFile();
        }*/
        //路径相关
        System.out.println(f.getAbsolutePath());
        System.out.println(f.getPath());
        System.out.println(f.toString());

        System.out.println("--------------");
        File f5 = new File("demo.txt");
        if(!f5.exists()){
            f5.createNewFile();
        }
        File f6 = new File("a/b/c/demo.txt");
        if(!f6.exists()){
            f6.createNewFile();
        }
        System.out.println(f6.getAbsolutePath());//绝对路径
        System.out.println(f6.getPath());//相对路径
    }
}

目录的操作

package com.msb.io01;

import java.io.File;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 20:42
 * @Description: com.msb.io01
 * @version: 1.0
 */
public class Test02 {
    public static void main(String[] args) {
        File f = new File("C:\\Users\\chenw\\IdeaProjects\\Testuntitled");
        System.out.println("文件是否可读:"+f.canRead());
        System.out.println("文件是否可写:"+f.canWrite());
        System.out.println("文件的名字:"+f.getName());
        System.out.println("上级目录:"+f.getParent());
        System.out.println("是否是一个目录:"+f.isDirectory());
        System.out.println("是否是一个文件:"+f.isFile());
        System.out.println("是否隐藏:"+f.isHidden());
        System.out.println("文件的大小:"+f.length());
        System.out.println("是否存在:"+f.exists());
        System.out.println("绝对路径:"+f.getAbsolutePath());
        System.out.println("相对路径:"+f.getPath());
        System.out.println("toString:"+f.toString());

        String[] list = f.list();//字符串
        for (String s : list) {
            System.out.println(s);
        }
        
        File[] fs = f.listFiles();//file对象
        for (File file : fs) {
            System.out.println(file);
        }

    }
}

IO流的分类


2. 一个一个字符 完成文件的复制

package com.msb.io02;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 20:53
 * @Description: com.msb.io02
 * @version: 1.0
 */
public class Test01 {
    public static void main(String[] args) throws IOException {
        File f = new File("d:/test.txt");
        FileReader fr = new FileReader(f);
        int n = fr.read();
//        while (n!=-1){
//            System.out.println(n);//单个字符的字节码打印
//            n = fr.read();
//        }
        while (n!=-1){
            System.out.println((char) n);//单个字符的打印
            n = fr.read();
        }

        fr.close();
    }
}

package com.msb.io02;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 20:53
 * @Description: com.msb.io02
 * @version: 1.0
 */
public class Test02 {
    public static void main(String[] args) throws IOException {
        File f = new File("d:/test.txt");
        FileReader fr = new FileReader(f);

        // 缓冲数组
        char[] ch = new char[5];
        int len = fr.read(ch);//一次接收到的实际个数  不满足5的情况下

        while (len!=-1){
//            // 方式1 迭代输出
//            for (int i = 0; i < len; i++) {//根据实际长度迭代
//                System.out.println(ch[i]);
//            }
            //方式2 char列表转String
            String str = new String(ch, 0, len);
            System.out.print(str);

            len = fr.read(ch);
        }

        fr.close();
    }
}

输出内容到文件

package com.msb.io02;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 21:06
 * @Description: com.msb.io02
 * @version: 1.0
 */
public class Test03 {
    public static void main(String[] args) throws IOException {
        File f = new File("d:demo.txt");

        FileWriter fw = new FileWriter(f);

        String str = "hello 美女";
        for (int i = 0; i < str.length(); i++) {
            fw.write(str.charAt(i));
        }



        fw.close();

    }
}

文件复制

package com.msb.io02;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Auther: jack.chen
 * @Date: 2023/9/20 - 09 - 20 - 21:09
 * @Description: com.msb.io02
 * @version: 1.0
 */
public class Demo04 {
    public static void main(String[] args) throws IOException {
        File f1 = new File("d:test.txt");
        File f2 = new File("d:demo.txt");


        FileReader fr = new FileReader(f1);
        FileWriter fw = new FileWriter(f2);

        // 方法一
//        int n = fr.read();
//        while (n!=-1){
//            fw.write(n);
//            n = fr.read();
//        }

        // 方法二
//        char[] ch = new char[5];
//        int len = fr.read(ch);
//        while (len!=-1){
//            fw.write(ch, 0, len);//实际有效长度
//            len = fr.read(ch);//注意这里也要传入ch
//        }
        // 方法三
        char[] ch = new char[5];
        int len = fr.read(ch);
        while (len!=-1){
            String str = new String(ch, 0, len);
            fw.write(str);
            len = fr.read(ch);
        }




        fw.close();
        fr.close();


    }
}

警告:不要用字符流去处理字节流
字符流:.txt .java .c .cpp 这些都是存文本的文件
字节流 非文本的文件:.jpg .mp3 .mp4 ...

3. 非文本 读取与复制

标签:java,File,System,IO,day13,println,new,out
From: https://www.cnblogs.com/cavalier-chen/p/17718474.html

相关文章

  • Java中print和println的区别
    Java中print()和println()的区别区别是print()输出完毕之后不换行,而println()输出完毕后会换行,所以println()在不输出任何东西的时候,就只输出一个换行符。示例如下:System.out.println("a");System.out.print("b");System.out.print("c");控制台输出结果:abc......
  • 无涯教程-JavaScript - F.INV函数
    描述F.INV函数返回F概率分布的倒数。如果p=F.DIST(x...),则F.INV(p...)=x。F分布可用于比较两个数据集变异程度的F检验。语法F.INV(probability,deg_freedom1,deg_freedom2)争论Argument描述Required/OptionalProbabilityAprobabilityassociatedwiththeF......
  • java中:idea开发环境下如何对5位数进行排序
    问题如何随机输入5位数,并对其进行排序,有序输出步骤打开idea,找到上方菜单栏中的file,按顺序file-new-project,新建工程文件。在建立好的工程文件的src文件下,新建类,最后输入代码图例如下代码如下publicclassDifferentFive{//随机输入5个不同的数字,使用程序将其有序输出pub......
  • 关于hive中的com.google.common.base.Preconditions.checkArgument(ZLjava/lang/Strin
    com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V这个报错是因为Hive 3.1.3guava19.jar和hadoop3.2.4不兼容导致 解决方法—— 之后hive就可以正常初始化了  参考博客——https://blog.csdn.net/happyfreeangel/ar......
  • Stable Diffusion基础:精准控制之ControlNet
    在AI绘画中精确控制图片的生成是一件比较困难的事情,炼丹师们经常需要大量抽卡才能得到一张满意的图片,不过随着ControlNet的诞生,这一问题得到了很大的缓解。ControlNet提供了十几种控制网络模型,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提......
  • 无涯教程-JavaScript - FISHER函数
    描述FISHER函数返回x处的Fisher变换。这种转换产生的功能通常呈正态分布而不是倾斜。使用此功能对相关系数执行假设检验。语法FISHER(x)争论Argument描述Required/OptionalXAnumericvalueforwhichyouwantthetransformation.RequiredNotesFisher变换的等......
  • 初识Java
    前言Java语言是一种广泛使用的面向对象编程语言,它具有简单、面向对象、分布式、解释执行、健壮安全等特点。Java语言可以在不同的平台上编写一次,然后在其他平台上运行。在这篇文章中,我们将对Java编程进行初步探讨。摘要Java是一种跨平台的编程语言,可以在不同的操作系统上运行。......
  • Stable Diffusion基础:ControlNet之重新上色(黑白照片换新颜)
     本文给大家分享StableDiffusion的基础能力:ControlNet之重新上色。这是一个最近新上的ControlNet模型,它可以识别图像中的不同区域,并使用不同的颜色重新绘制它们。安装ControlNet安装工欲善其事必先利其器,ControlNet还是先要安装好的,已经安装好的请跳过这一步。......
  • 基于Java面向对象思想对个人项目的深度分析
    基于Java面向对象思想对个人项目的深度分析一、摘要本文站在java面向对象思想的角度,深入研究了GJH同学Java中小学数学卷子自动生成程序的工程代码。通过对核心类、继承与多态、封装与解耦等面向对象思想和生成题目算法进行了深度分析,全面探讨了系统的优缺点与改进空间。关键字:j......
  • TVP 专家谈腾讯云 Cloud Studio:开启云端开发新篇章
    点击链接了解详情导语|近日,由腾讯云TVP团队倾力打造的TVP吐槽大会第六期「腾讯云CloudStudio」专场圆满落幕,6位资深的TVP专家深度体验腾讯云CloudStudio产品,提出了直击痛点的意见与建议,同时也充分肯定了腾讯云CloudStudio的实力与价值,帮助腾讯云CloudStudio......