java输入输出流_为什么只保留一个字节的信息写出-程序员宅基地

技术标签: java  idea  

1、IO流概述

  • 1、明确要操作的数据是数据源还是数据目的(读/写)

源:InputStream Reader
目的:OutputStream Writer

  • 2、明确要操作的设备上的数据是字节还是文本

源:
字节:InputStream
文本:Reader

目的:
字节:OutputStream
文本:Writer

  • 3、明确数据所在的具体设备

源设备:
硬盘:文件File开头
内存:数组、字符串
键盘:System in
网络:Socket

对应目的设备:
硬盘:文件File开头
内存:数组、字符串
键盘:System out
网络:Socket

  • 4、明确是否需要额外功能

需要转换:转换流InputStreamReader、OutputStreamWriter
需要高效:缓冲流Buffered
保证数据的输出格式:打印流PrintStream、PrintWriter

IO流的分类
image


2、File类

2.1 概述

java.io.File类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。
java.io.File类是文件和目录路径的抽象表示,主要用于文件和目录的创建、查找和删除。

2.2 构造方法

  • 1、public File(String pathname:通过将给定的路径名字符串转换成抽象路径名来创建新的File实例。
  • 2、public File(String parent, String child:从父路径名字符串和子路径名字符串创建新的File实例。
  • 3、public File(File parent, String child:从父抽象路径名和子路径名字符串创建新的File实例。
1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2.  File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建。
// 文件路径名 
String path = "D:\\123.txt";
File file1 = new File(path); 

// 文件路径名
String path2 = "D:\\1\\2.txt";
File file2 = new File(path2);     -------------相当于D:\\1\\2.txt

// 通过父路径和子路径字符串
 String parent = "F:\\aaa";
 String child = "bbb.txt";
 File file3 = new File(parent, child);  --------相当于F:\\aaa\\bbb.txt

// 通过父级File对象和子路径字符串
File parentDir = new File("F:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相当于F:\\aaa\\bbb.txt

File类的注意点:
1、一个File对象代表键盘中实际存在一个文件或目录。
2、File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,
都不影响File对象的创建。

2.3 常用方法

  • 获取功能
  • 获取绝对路径和相对路径
  • 判断功能
  • 创建删除功能

2.3.1 获取功能的方法

  • 1、public String getAbsolutePath():返回此File的绝对路径名字符串。
  • 2、public String getPath():将此File转换为路径名字符串。
  • 3、public String getName():返回由此File表示的文件或目录的名称。
  • 4、public long length():返回由此File表示的文件的长度。
package demo01;

import java.io.File;

public class FileGet {
   
    
    public static void main(String[] args) {
   
    
        File f = new File("E:\\Java\\javaSE\\thread\\thread-study\\笔记\\多线程.md");
        System.out.println("文件的绝对路径:" + f.getAbsolutePath());
        System.out.println("文件构造路径:" + f.getPath());
        System.out.println("文件名称:" + f.getName());
        System.out.println("文件长度:" + f.length() + "字节");

        File f2 = new File("E:\\Java\\javaSE\\thread\\thread-study\\笔记");
        System.out.println("目录的绝对路径:" + f2.getAbsolutePath());
        System.out.println("目录构造路径:" + f2.getPath());
        System.out.println("目录名称:" + f2.getName());
        System.out.println("目录长度:" + f2.length());
    }
}

注意:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。

2.3.2 绝对路径和相对路径

绝对路径:一个完整的路径,以盘符开头,例如E://aaa.txt
相对路径:一个简化的路径,不以盘符开头,例如//aaa.txt//b.txt

1、路径不区分大小写
2、路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠

package demo01;

import java.io.File;

public class FilePath {
   
    
    public static void main(String[] args) {
   
    
        File f1 = new File("E:\\aaa.txt");
        System.out.println(f1.getAbsoluteFile());

        File f2 = new File("aaa.txt");
        System.out.println(f2.getAbsoluteFile());
    }
}

输出结果:
E:\aaa.txt
E:\Java\javaSE\IOStream\IOStream-Study\aaa.txt

2.3.3 判断功能的方法

  • 1、public boolean exists():此File表示的文件或目录是否实际存在。
  • 2、public boolean isDirectory():此File是否为目录。
  • 2、public boolean isFile():此File是否为文件。
package demo01;

import java.io.File;

public class FileIs {
   
    
    public static void main(String[] args) {
   
    
        File f1 = new File("E:\\aaa.txt");
        File f2 = new File("E:\\aaa");
        //判断是否存在
        System.out.println("文件是否存在:" + f1.exists());
        System.out.println("目录是否存在:" + f2.exists());

        //判断是文件还是目录
        System.out.println("E:\\aaa是文件吗?" + f2.isFile());
        System.out.println("E:\\aaa是目录吗?" + f2.isDirectory());
    }
}

运行结果:
文件是否存在:true
目录是否存在:true
E:\aaa是文件吗?false
E:\aaa是目录吗?true

2.3.4 创建删除功能的方法

  • 1、public boolean creatNewFile():文件不存在,创建一个新的文件夹并返回true;文件存在,不创建文件
    并返回false
  • 2、public boolean delete():删除此File表示的文件或目录。
  • 3、public boolean mkdir():创建由此File表示的目录。
  • 4、public boolean mkdirs():创建由此File表示的目录,可以创建多级目录开发中一般使用mkdirs()
package demo01;

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

public class FileCreateDelete {
   
    
    public static void main(String[] args) throws IOException {
   
    
        //文件的创建
        File f1 = new File("bbb.txt");
        System.out.println("bbb.txt是否存在:" + f1.exists());//false 不存在
        System.out.println("bbb.txt是否创建:" + f1.createNewFile());//true 需要创建
        System.out.println("bbb.txt是否创建:" + f1.createNewFile());//false 已经创建了,不需要再创建
        System.out.println("bbb.txt是否存在:" + f1.exists());//true 创建了,所以存在

        //目录的创建
        File f2 = new File("newDir");
        System.out.println("newDir是否存在:" + f2.exists());//false
        System.out.println("newDir是否创建:" + f2.createNewFile());//true
        System.out.println("newDir是否存在:" + f2.exists());//true

        //创建多级目录
        File f3 = new File("newDira\\newDirb");
        System.out.println(f3.mkdir());//false
        File f4 = new File("newDira\\newDirb");
        System.out.println(f4
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DREAM5555/article/details/118709892

智能推荐

POJ1733 Parity game(并查集模型+带权并查集+离散化)_partiy game poj1733-程序员宅基地

文章浏览阅读357次。题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的思路:一类经典的并查集题目,经典模型就是将[l,r]这个区间化为(l-1,r],那么1的个数就可以表示为sum[r]-sum[l-1],也就确定了奇偶性,我们可以用r[]数组表示这个端点到它的根节点的1的奇偶(这个区间就是(i,root(i)](0代表偶,1代表奇_partiy game poj1733

华为畅享9 plus鸿蒙,华为畅享9 Plus 与OPPO A3之间的较量 实力差距一目了然-程序员宅基地

文章浏览阅读611次。在游戏性能方面怎样呢?笔者通过热门游戏王者荣耀对两款产品的帧数浮动和温度进行了分别测试。华为畅享9 Plus使用下来的帧率变化为55-60帧,游戏时表现的机身温度是33.5℃。OPPO A3使用下来帧率变化为55-58帧,游戏时的温度表现是34.2℃。两者虽然都没有在游戏过程中出现太频繁的卡顿,但整个体验而言,华为畅享9 Plus的流畅性好更好些,画面的连续性输出效果不错,而且温度控制的也在可接受..._华为畅享9plus和oppoa3哪个好

perceptron心得_mcp神经元-程序员宅基地

文章浏览阅读2.4k次。电脑由许多连接在一起的基本细胞(也叫做神经元)来产生高度复杂的模式。McCulloch 和 Pitts于是在1943年给出了一个高度简化的神经元模型,以用于对生物神经元进行关键特征建模。也就是我们常说的MP或者MCP模型。MP的核心思想是每个MCP神经元网络都编码一些逻辑问题,但注意MP神经元并非真正的神经元。却对今天的神经网络和计算机都具有很强的启发性。MP具有全有或全无的特征,比如常用的逻辑运算只有1和0两种结果。这种特征由阈值进行控制。MP的连接可以理解为检测器,如某个_mcp神经元

vb的函数在c语言中有吗,VB有类似C语言里的memset函数吗?-程序员宅基地

文章浏览阅读141次。你的位置:问答吧-> VB-> 问题详情VB有类似C语言里的memset函数吗?网上查的如下:原型是extern void *memset(void *buffer, int c, int count)buffer为指针或是数组,c是赋给buffer的值,count是buffer的长度.void *memset..._c++ memset函数 对应vb

python-tkinter布局(聊天窗口)_python tkinter高级聊天界面-程序员宅基地

文章浏览阅读9.7k次,点赞10次,收藏46次。Frame控件、Text控件学习,制作简易聊天窗口布局:#!/usr/bin/env python3# _*_ coding:utf-8 _*_from tkinter import *import time'''定义消息发送函数:1、在<消息列表分区>的文本控件中实时添加时间;2、获取<发送消息分区>的文本内容,添加到列表分区的文本中;3、将<发..._python tkinter高级聊天界面

CCF 201809-1 卖菜 (python语言)_python奶奶卖菜-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏5次。试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。   第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自..._python奶奶卖菜

随便推点

RSA 原理与 python 实现_rsa 的python代码-程序员宅基地

文章浏览阅读1.5k次,点赞5次,收藏4次。原理摘自:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html如果看不懂或者对此没有需求的同学可以直接翻到底查看 python 实现一、基础数论1、互质关系如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成..._rsa 的python代码

Android Jetpack ViewModel 的使用_viewmodel 延迟初始化-程序员宅基地

文章浏览阅读156次。官网镇楼 ViewModel 概览 | Android 开发者 | Android Developershttps://developer.android.google.cn/topic/libraries/architecture/viewmodel?hl=zh_cn#kotlinViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。ViewModel 是用于管理数据的,界面上的数据,都应该放到 ViewM_viewmodel 延迟初始化

C++ error-程序员宅基地

文章浏览阅读1k次。文章目录变量重命名变量重命名countalgorithm库和std命名空间indexcstring/string.h库和std命名空间_c++ error

ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现_多标签分类数据集类别可视化代码-程序员宅基地

文章浏览阅读3.2k次,点赞15次,收藏22次。ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现目录机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现代码实现机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现输出结果Save success! F:\File_Python\Resources\data\data_test01.csv<class 'pandas.core.frame.DataFram..._多标签分类数据集类别可视化代码

date指令_date +%m%d-程序员宅基地

文章浏览阅读693次。date指令-显示当前日期• 基本语法 1) date (功能描述:显示当前时间) 2) date +%Y (功能描述:显示当前年份) 3) date +%m (功能描述:显示当前月份) 4) date +%d (功能描述:显示当前是哪一天) 5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)• 应用实例 案例1: 显示当前时间信息 案例2:..._date +%m%d

关于zlib安装时出现的错误_/usr/bin/ld: adler32.lo: relocations in generic el-程序员宅基地

文章浏览阅读7.9k次,点赞5次,收藏6次。问题:将Makefile中的CC==gcc改为arm-hisiv500-linux-gcc后make出现以下错误:/usr/bin/ld: adler32.lo: Relocations in generic ELF (EM: 40)adler32.lo: error adding symbols: File in wrong formatcollect2: error: ld ret_/usr/bin/ld: adler32.lo: relocations in generic elf (em: 40)

推荐文章

热门文章

相关标签