4.11java学习总结

news2024/11/27 18:48:45

File

创建file类的方法

import java.io.File;

public class Main {
    public static void main(String[] args) {
        String l = "D:\\text.txt";
        String l1 = "D:\\";
        String l2 = "test.txt";
        File f1 = new File(l);
        System.out.println(f1);

        File f2 = new File(l1, l2);
        System.out.println(f2);

        File f3 =new File(l1);
        File f4 = new File(l1,l2);
        System.out.println(f4);
    }
}
File常见的方法

import java.io.File;

public class Main {
    public static void main(String[] args) {
        String l = "D:\\text.txt";
        //创建文件类
        File f = new File(l);
        //判断对象是否为文件夹
        System.out.println(f.isDirectory());
        //判断文件是否为文件
        System.out.println(f.isFile());
        //判断是对象是否存在
        System.out.println(f.exists());
        //返回文件的大小
        System.out.println(f.length());
        //放回文件的绝对路径
        System.out.println(f.getAbsolutePath());
        //放回定义文件时使用的路径
        System.out.println(f.getPath());
        //返回文件的名字(带后缀的)
        System.out.println(f.getName());
        //返回文件的最后修改时间
        System.out.println(f.lastModified());
    }
}

运行结果

文件的创建方法

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

public class Main {
    public static void main(String[] args) throws IOException {
        String l = "D:\\text.txt";
        File f = new File(l);
        //创建一个空文件,如果父级路径不存在会报错
        f.createNewFile();
        //创建单级文件夹,如果文件夹已存在则放回false
        String l2="D:\\jjm";
        File f2=new File(l2);
        System.out.println(f2.mkdir());
        //删除文件
        f2.delete();
    }
}

IO流

IO流的分类
输入流和输出流

按传输的方向分为输入流和输出流.

字节流和字符流

按每次获取的字节大小分为字节流和字符流.

字节流:每次只获取一个字节大小的数据;

字符流:每次获取多个字节大小的数据(具体大小根据数据自动获取);

因为字节流每次只获取一个字节大小的数据所以当你想使用字节流一次来获取一个中文字符的时候就会出错,因为中文字符占两个字符(GBK编码占两个字符,UTF-8编码占三个字符)数据会获取不完全;但字符流不会出现这种问题,他自己会根据数据自动获取应该获取的大小以保证数据的完整性.

字节流可以处理一切文件,而字符流一般只用来处理纯文本文件.

节点流和处理流

按功能分为节点流和处理流

节点流:直接对数据进行处理的流.

处理流:先把要处理的数据加载进缓存区然后再进行处理(处理大数据的时候效率高).

处理流在对数据进行处理的时候和节点流一样,只是比节点流多了一个缓冲区(用来存要用的数据)这样就不用去硬盘进行查找了.

字节流中的节点流方法FileOutputStream和FileInputStream

FileOutputStream是向文件里写数据的,FileInputStream是从文件里读取数据的.

FileOutputStream和FileInputStream的定义方式是一样的:

类名 变量名=new 类名("路径");

返回值为读取或的字节的个数

无返回值

//这个程序完成了复制一个文件
public class Main {
    public static void main(String[] args) throws IOException {

        String l = "D:\\123.mp4";
        String l1="D:\\1234.mp4";
        byte a[]=new byte[1024*1024];//数组不宜开太大,不然会发生复制的文件大小超过原文件的情况
        FileOutputStream stream =new FileOutputStream(l1);
        FileInputStream  stream1=new FileInputStream(l);
        int  x;
        while((stream1.read(a))!=-1){
            stream.write(a);
        }
        System.out.println(z-y);
        stream1.close();
        stream.close();
    }
}
FileReader和FileWriter

FileReader构造方法

FileWriter构造方法

public class Main {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter=new FileWriter("D:\\text.txt");
        FileReader fileReader=new FileReader("D:\\text.txt");
        fileWriter.write("jjm");
        fileWriter.close();
        char [] s =new char[3];
        int x;
        while((x=fileReader.read(s))!=-1){
            System.out.println(s);
        }
        fileReader.close();
    }
}

运行结果

注意:FileWriter和FileOutputStream在打开文件的时候都会把文件清空。FileOutStream在程序中执行写入操作的时候会立即执行,但FileWriter不会。

FileWriter和FileReader类实际上都是有一个大小为8192(byte)的缓冲区存在的所有的操作都会在缓冲区进行 :

FileReader会先将字符提取到缓冲区再来读取这是文件被清空也无法影响到缓冲区,当缓冲区被读取完了才会去硬盘里再读取数据放到缓冲区。

FileWriter会先将要写入的字符写到缓冲区当缓冲区被写满了、流要被关闭了或者使用者手动刷新(flush方法)才会将缓冲区的数据写到硬盘中去。

public class Main {
    public static void main(String[] args) throws IOException {
        FileOutputStream fileOutputStream =new FileOutputStream("D:\\text.txt");
        FileInputStream fileInputStream=new FileInputStream("D:\\text.txt");
        fileOutputStream.write(3);
        System.out.println(fileInputStream.read());
        fileInputStream.close();
        fileOutputStream.close();
}

public class Main {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter=new FileWriter("D:\\text.txt");      //FileReader和FileWriter的使用
        FileReader fileReader=new FileReader("D:\\text.txt");
        fileWriter.write(2);
        int x;
        while((x=fileReader.read())!=-1){
            System.out.println(x);
        }
        fileReader.close();
        fileWriter.close();
}

public class Main {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter=new FileWriter("D:\\text.txt");      //FileReader和FileWriter的使用
        FileReader fileReader=new FileReader("D:\\text.txt");
        fileWriter.write(2);
        fileWriter.close();
        int x;
        while((x=fileReader.read())!=-1){
            System.out.println(x);
        }
        fileReader.close();
}

BufferedInputStream和BufferedOutputStream

构造器:

BufferedInputStream变量名=new (FileInputStream("路径名"));

BufferedOutputStream变量名=new (FileOutputStream("路径名"));

BufferedInputStream bufferedInputstream=new BufferedInputStream(new FileInputStream("D:text.txt"));
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("D:text.txt"));

除了创建对象有点不一样其他的使用都是和FileInputStream、FileOutputStream一样的在此就不过多介绍了。

BufferedReader和BufferedWriter
BufferedReader bufferedReader=new BufferedReader(new FileReader("D:text.txt"));
BufferedWriter bufferedwriter=new BufferedWriter(new FileWriter("D:text.txt"));

缓冲区大小为8192(char),运行速度没有得到显著的提升,主要是多了两种特有的方法。

跨平台的换行解释:

因为不同平台的换行符号是不一样的(mac:\r,windows:\r \n,Linux:\n)这个方法会自动根据你所使用的系统自动的去输出换行符号。

其他的和FileReader、FileWriter一样的。

注意:字节缓冲流的缓冲区类型为byte,字符缓冲流的缓冲区类型为char,字节缓冲流的缓冲区大小为8192(byte)=8KB,字符缓冲区的缓冲区大小为8192(char)=16KB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣HOT100 - 48. 旋转图像

解题思路&#xff1a; 要求原地旋转 可以先上下翻转&#xff0c;再沿主对角线反转&#xff08;左上到右下的对角线&#xff09; class Solution {public void rotate(int[][] matrix) {int n matrix.length;// 上下翻转for (int i 0; i < n / 2; i) {for (int j 0; j &…

systemctl start docker报错(code=exited, status=1/FAILURE)

运行systemctl start docker报错内容如下: 输入systemctl status docker.service显示以下内容&#xff1a; 本次启动不起来与docker服务无关 具体解决问题是修改 /etc/docker/daemon.json&#xff0c;vim /etc/docker/daemon.json # 添加如下内容 {"registry-mirrors&qu…

Windows和Linux环境下忘记MySQL密码的解决办法

文章目录 一、Linux下MySQL忘记root密码情景再现1、停止MySQL服务2、安全模式启动MySQL服务&#xff0c;并暂时跳过权限表验证以及禁用网络连接3、更新mysql.user表中root用户的密码。4、刷新MySQL的权限缓存 二、Windows下MySQL忘记密码&#xff08;8.0以上版本&#xff09;情…

如何动态渲染HTML内容?用v-html!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

二叉树的前序

1.递归 public boolean isSymmetric(TreeNode root) {if(root null){return true;}return deepCheck(root.left,root.right);}boolean deepCheck(TreeNode left, TreeNode right){//递归的终止条件是两个节点都为空//或者两个节点中有一个为空//或者两个节点的值不相等if(lef…

windows下pycharm中配置conda虚拟环境

目录 一&#xff1a;背景 二&#xff1a;安装conda环境 三&#xff1a;pycharm配置环境 四&#xff1a;注意问题 一&#xff1a;背景 在使用python的过程中&#xff0c;我们可能需要在一个windows环境中创建多个版本的python和安装不同的库去做一些开发任务。 使用conda&a…

电脑无法开机?原因分析与解决方案

电脑无法开机是一种常见的问题&#xff0c;可能会给用户带来诸多困扰。无法启动可能是由于硬件故障、软件问题或者其他未知原因引起的。在本文中&#xff0c;我们将介绍三种常见的方法来解决电脑无法开机的问题&#xff0c;以帮助用户尽快恢复正常使用。 方法1&#xff1a;检查…

永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)

文章目录 1、前言2、扩展卡尔曼滤波器原理2.1 预测阶段&#xff08;时间更新阶段&#xff09;2.2 校正阶段&#xff08;状态更新阶段&#xff09; 3、永磁同步电机EKF的模型4、永磁同步电机EKF的无位置状态观测仿真4.1 核心模块&#xff08;在滑膜、龙伯格、磁链等观测器基础上…

Redis(一) Redis简介

Redis&#xff0c;全名Remote Dictionary Server&#xff0c;是一种开源的、基于内存的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&#xff08;hashes&#xff09;、列…

前端学习之路-项目实战(1)

每日吐槽&#xff1a;有一个奇怪的问题&#xff0c;怎么一眼看出一个求职者是否是培训班出来的&#xff0c;有的求职上写着&#xff0c;希望大家坦诚一点&#xff0c;but&#xff0c;你这艘诚实的泰坦尼克号终究还是撞上了社会阴暗面的冰山&#xff0c;OMG&#xff0c;不让包装…

【六 (5)机器学习-分类任务-kaggle泰坦尼克号宇宙飞船实战】

目录 文章导航一、什么是分类任务二、分类任务常见算法三、代码实现字段说明1、导入类库2、读取数据3、查看缺失值和数据类型4、特征衍生5、缺失值处理6、特征编码7、建立模型并评估8、模型融合 文章导航 【一 简明数据分析进阶路径介绍&#xff08;文章导航&#xff09;】 一…

基于单目相机的标靶三维定位——原理阐述

之前我们已经完成了 棋盘格标靶的制作相机内参的标定 接下来我们将实现使用标定后的相机完成图像内棋盘格标靶起始点的三维定位/测距,如下图所示。 看到这句话我们的第一印象可能是:单目相机如何实现三维测距呢?的确,由于相机的成像结果中丢失了深度信息,我…

4/11 QT_day5

服务器端 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QMessageBox> #include <QTcpSocket> #include <QList> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass …

强化学习-DQN改进及一些强化学习路由优化论文笔记

RL 通用超参数 DQN改进 Duel Structure VS→该state在当前policy下的value QSA→该state进行这个action在当前policy下的value advantage VS - QSA 裁剪区域的确定&#xff1f; 34194按行输出min&#xff0c;33193min为90*90 Replay buffer background knowledge [b…

最优算法100例之41-用两个栈实现队列

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 用两个栈实现队列 题解报告 stack<int> stack1; stack<int> stack2; void push(int node) {stack1.push(node);…

多线程的入门(五)线程池的保活策略

线程池是如何保活的呢&#xff1f;通过对源码的分析得出&#xff0c;线程池通过阻塞队列&#xff0c;与关闭工作线程后新生成空闲线程实现的保活策略源代码如下&#xff1a; runkworker&#xff08;&#xff09;方法的getTask&#xff08;&#xff09;方法中有这样一段代码&…

读书笔记之《如何精心设计提示词来精通ChatGPT》

《如何精心设计提示词来精通ChatGPT》这本书英文标题为&#xff1a;《The Art of Prompt Engineering with chatGPT》&#xff0c;于2023年出版。作者是Nathan Hunter 。 Nathan Hunter简介&#xff1a;ChatGPT培训的创始人。作为一名资深培训师和教学设计师&#xff0c;我在过…

睿尔曼复合机器人之底盘操作流程

以操作流程为例&#xff0c;介绍底盘的操作流程。 开机&#xff1a;长按电源按钮&#xff0c;蜂鸣器短响两声&#xff0c;当第三声变长鸣后松开&#xff0c;等待机器开机。 使用&#xff1a; 建立通讯&#xff1a;主要采用无线WiFi与底盘进行通讯连接 无线连接方式&#xff…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

流媒体的安全谁来保障

流媒体的安全谁来保障 说起媒体&#xff0c;我们马上就会想到报纸新闻、广播、电视。 其实所谓的流媒体同我们通常所指的媒体是不一样的&#xff0c; 它只是一个技术名词。流媒体到底是什么&#xff1f;能给我们的生活带来什么&#xff1f;跟小德一起来看看。 流媒体是什么&a…