首页 > 编程语言 >Java IO

Java IO

时间:2023-03-17 22:33:19浏览次数:37  
标签:file1 Java 字节 num IO new txt fil

文件

1. 两种路径

//1,绝对路径  从盘符开始的路径
	File file1 = new File("D:\\fil\\a.txt");
//2,相对路径 相对于工程的路径
//   ../返回上一层目录
	File file2 = new File("./fil/a.txt ");

2. File常用的方法

	File file1 = new File("./fil");
		file1.exists());			//文件或目录是否存在
		file1.length());       	 	//文件大小 字节个数
		file1.getName());        	//文件或目录名称
		file1.canRead());        	//是否可读
		file1.canWrite());       	//是否可写
		file1.isFile());        	//是文件吗
		file1.isDirectory());       //是目录吗
		file1.lastModified());     	//最近修改时间
		file1.getParent());        	//获取父路径
		file1.getPath());        	//获取路径
		file1.getAbsolutePath());   //获取绝对路径

3. 斐波那契数列

 public static int fibonacci(int num) {
        if (num == 0 || num == 1) {
            return num;
        }
        // 递归调用
        return fibonacci(num - 1) + fibonacci(num - 2);
    }

IO

1. 字节流

1.1 文件字节流输入

1.	//流对象要进行关闭 fileInputStream.close();放到finally中 
	FileInputStream fileInputStream = new FileInputStream("./fil/a.txt");
	//读取数据
		int num;
    	while ((num = fileInputStream.read()) != -1) {
        	System.out.println(num);
        	}
	//一次性读取所有字节数据 到字节数组中;如果是大文件 有可能报内存溢出
    	byte[] readAllBytes = fileInputStream.readAllBytes();
	//readNBytes 只读取指定字节个数的数据出来
    	byte[] bytes = fileInputStream.readNBytes(10);

2.	//try 新语法 自动关闭流对象
    try (FileInputStream fileInputStream = new FileInputStream("./fil/a.txt")) {
            byte[] bytes = fileInputStream.readAllBytes();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

1.2 文件字节流输出

    private static void method5() {
        //文件字节输出流 如果文件不存在会自动创建 前提条件是父路径要存在否则报异常 append:false覆盖  append:true追加
        try (FileOutputStream fileOutputStream = new FileOutputStream("./fil/out.txt", true)) {
            fileOutputStream.write(97);
            byte[] bytes = "abcdefg".getBytes();
            fileOutputStream.write(bytes);
            fileOutputStream.write(bytes, 0, 6);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

1.3 高效/缓存字节流

//缓存字节输出流什么时候会真正的写?1 内部数组满了 2 流对象关闭 会把缓存中的数据一次性更新到硬盘文件中 
		try (BufferedInputStream bufferedInputStream =
                     new BufferedInputStream(new FileInputStream("./fil/a.txt"));
             BufferedOutputStream bufferedOutputStream =
                     new BufferedOutputStream(new FileOutputStream("./fil/out.txt"))) {
            //read方法依然是每次读取一个字节数据出来 如果读到流的末尾返回值是-1
            int num;
            while ((num = bufferedInputStream.read()) != -1) {
                bufferedOutputStream.write(num);
            }
            //readAllBytes 一次性读取所有字节数据
            //byte[] bytes = bufferedInputStream.readAllBytes();
            //byte[] bytes1 = bufferedInputStream.readNBytes(10);
            //BufferedInputStream.transferTo(bufferedOutputStream)内容拷贝
            bufferedOutputStream.write(97);
            bufferedOutputStream.write("abc".getBytes());*/
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

2. 字符流

2.1 文件字符流

 		try (FileReader fileReader = new FileReader("./fil/a.txt");
             // 如果文件不存在能自动创建 append:true 表示追加
             FileWriter fileWriter = new FileWriter("./fil/out.txt")) {
            //read一次读取一个字符的数据进来 如果读取完毕返回值是-1
            int num;
            while ((num = fileReader.read()) != -1) {
                //char->int
                System.out.println((char) num);
            }
            fileWriter.write(97);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

2.2 高效字符流

//什么时候真正的写? 1 数组满了 2 流对象关闭
		try (BufferedReader bufferedReader =
                     new BufferedReader(new FileReader("./fil/a.txt"));
             BufferedWriter bufferedWriter =
                     new BufferedWriter(new FileWriter("./fil/out.txt"))) {
            // read 一次读取一个字符的数据进来 如果读取完毕返回值是-1
            //int read = bufferedReader.read();
            //readLine一次性读取一行数据;如果读取完毕返回值是null
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }
            bufferedWriter.write(100);
            //文件内容拷贝
            bufferedReader.transferTo(bufferedWriter);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

标签:file1,Java,字节,num,IO,new,txt,fil
From: https://www.cnblogs.com/jh0129/p/17228463.html

相关文章

  • Attention与SelfAttention
    目录Seq2Seq+AttentionAttention的原理方法一(Usedintheoriginalpaper)方法二(morepopular,thesametoTransformer)SummarySelfAttentionSimpleRNN与Attention当前状......
  • c++ mutex operations try_lock,un_lock
    //model/util.h#pragmaonce#include<chrono>#include<ctime>#include<fstream>#include<functional>#include<iomanip>#include<iostream>#include<list>......
  • 关于Argocd报错FATA[0000] rpc error: code = Unauthenticated desc = invalid sessio
    关于Argocd命令行登陆报错问题,原因是用户认证过期,重新命令行登陆Argocd即可#argocdrepolistWARN[0000]Failedtoinvokegrpccall.Useflag--grpc-webingrpcca......
  • Notification(状态栏通知)详解
    Android中用于在状态栏显示通知信息的控件:Notification,相信大部分学Android都对他都很熟悉,而网上很多关于Notification的使用教程都是基于2.x的,而现在普遍的Android设备基本......
  • Viual Studio添加新的工作负载
    1.在自己电脑中找到ViualStudioInstaller这样一个文件,我自己的是在"C:\ProgramData\Microsoft\Windows\StartMenu\Programs"路径下若是找不到,也可以下载一个"everythin......
  • 使用Java开发贪吃蛇游戏一之静态界面
    一、设置窗口,包括但不限于窗口标题、可见、窗口可关闭,固定大小、设置大小 packagelearn_snake;/**@authorMK*@date2023年3月15日*/importjavax.swing.JFra......
  • biopython 文件解析
    test.fasta内容如下:>heavyEVQLVESGGGLVQPGGSLRLSCAASGFTLSGDWIHWVRQAPGKGLEWLGEISAAGGYTDYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCARESRVSFEAAMDYWGQGT>lightDIQMTQSPSS......
  • Java基础字符串练习
    ​请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:"abcba"、"上海自来水来自海上"均为对称字符串。训练提示:1、判断是否对称,方法的返回值......
  • Java基础字符串练习
    ​我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数......
  • 人工智能-Pytorch案例实战(1)-CNN Convolution Layer
    ConvolutionLayer左侧图示:一张彩色的图片,有三个部分组成(长度width宽度high深度depth),例如:32*32*3表示一彩色图片长度和宽度分别是32,32右侧图示:在CNN中,filter是一个......