JAVA基础-输入输出流
一,File类:文件的创建和删除
1.File(String pathname):pathname是指路径名称。用法 File file = new File("d:/1.txt ");
2.File(String parent, String child):parent是父路径字符串,child是子路径字符串。用法:File file = new File(" D:/", " letter.txt");
3.File(File f, String child):File file = new file();
如果当前目录里不存在名为word的文件,File类对象可以调用createNewFile()方法创建一个名为word的新文件。
还可以用文件对象的delete()方法删除掉文件。
public class FileTest {
public static void main(String[] args) {
File file = new File("weord.txt"); //创建文件对象,在当前目录
if(file.exists()) {
file.delete();
System.out.println("文件已删除");
}else{
try{ //try语句块捕捉可能出现的异常
file.createNewFile(); //在当前目录下创建文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace(); //
}
}
}
}
二,获取文件信息:都用特定方法获取文件的各类信息。
getName():获取文件的名称 length():获取文件的长度 getAbsolutePath():获取文件的绝对路径 getParent():获取文件的父路径 lastModified():获取文件最后修改时间
canread():判断是否可读 canwrite():判断是否可写 exits():判断是否存在 isFile():判断是否存在 isDirectory():判断是否是一个目录 isHidden():判断是否是隐藏文件
我们把上面创建和删除的例子稍微改一下:
public class FileTest {
public static void main(String[] args) {
File file = new File("word.txt"); //创建文件对象,在当前目录
if(file.exists()) { //获取各类信息
String name = file.getName();
System.out.println("文件名称是:"+ name);
long length = file.length();
System.out.println("文件长度是:"+ length);
boolean hidden = file.isHidden();
System.out.println("文件是隐藏文件吗?"+ hidden);
String path = file.getAbsolutePath();
System.out.println("文件的绝对路径是:"+ path);
boolean read = file.canRead();
System.out.println("文件是否可读?"+ read);
}else{
try{ //try语句块捕捉可能的异常
file.createNewFile(); //创建文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace(); //
}
}
}
}
一,文件输入/输出流 :FileInputStream和FileOutputStream类
程序运行期间的大部分数据都在内存中进行操作,当程序结局了或者关闭后,这些数据都会消失。那么能不能把这些数据都永久的保存下来呢?
答案是肯定的:用文件输入/输出流与指定的文件建立连接,把数据永久性的保存到文件里。
FileInputStream和FileOutputStream类都用来操作磁盘文件。前者具有基本的文件写入能力,后者有基本的文件读取能力。
FileInputStream有两种构造方法:
1.FileInputStream(String name):使用给定的文件名name创建一个FileInputStream对象。
2.FileInputStream(File file):这个构造方法允许在把文件连接输入流之前对文件做进一步分析。
FileOutputStream类有前者相同的参数构造方法。注意到是:创建一个FileInputStream对象时,可以指定不存在的文件名,但此文件不能是一个已经被其他程序打开的文件。
注意:FileInputStream类和FileOutputStream类都只提供了对字节或字节数组的读取方法。汉字在文件中占用两个字节,所以读取不好会出现乱码。(所以下面提到的字符流比字节流更为简便)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream; public class FileTest {
public static void main(String[] args) { File file = new File("word.txt"); //创建文件对象,在当前目录
try {
FileOutputStream out = new FileOutputStream(file);//创建FileOutputStream类对象
byte buy[] = "我有java课,在每周一的一二节。".getBytes();//创建数组存放字符串的二进制
out.write(buy); //把数组中的信息写入到文件里
out.close(); //把流关闭
}catch(Exception e){
e.printStackTrace();
}
try {
FileInputStream in = new FileInputStream(file);//创建FileIntputStream类对象
byte byt[] = new byte[1024]; //创建数组,定义内存大小
int len = in.read(byt); //获取写入信息的长度
System.out.println("文件中的信息是:"+ new String(byt, 0, len));//把文件中的信息输出
in.close(); //关闭流
}catch(Exception e){
e.printStackTrace();
}
}
}
虽然java在程序结束时自动关闭所有打开的流,但是当使用完流后,显示地(主动的)关闭所有打开的流是个好习惯。
二,FileReader和FileWriter类(字符流)
FileReader和FileWriter类 对应了FileInputStream和FileOutputStream类。FileReader流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余内容,直到源的末尾或流被关闭。
三,带缓存的输入/输出流:BufferInputStream和BufferOutputStream
缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip(), mark(), reset()等方法。
BufferInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。有两个构造方法:
1.BufferInputStream(InputStream in):创建一个带有32个字节的缓存区。
2.BufferInputStream(InputStream in, int size):按指定的大小创建缓存区。
从构造方法能看出来:BufferInputStream对象位于InputStream类对象之前。 所以字节数据读取文件的过程是:文件 --> InputStream --> BufferInputStream --> 目的地
一个最优的缓存区的大小取决于所在的操作系统,可用的内存空间,机器配置。
使用BufferOutputStream输出信息和OutputStream输出信息完全一样,不过BufferOutputStream有一个flush()方法来把缓存区的信息强制输出完。
1.BufferInputStream(InputStream in):创建一个带有32个字节的缓存区。
2.BufferInputStream(InputStream in, int size):按指定的大小创建缓存区。
2019-03-24 未完, 过两天补。
JAVA基础-输入输出流的更多相关文章
- Java基础—输入输出流
流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流——输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分为节 ...
- java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- java 对象输入输出流
对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息. 对象的持久化. 比如:用户信息. ObjectInputStream : 对象输入流 ...
- 浅谈Java的输入输出流(转)
Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输 ...
- Java:输入输出流 java.io包的层次结构
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...
- java IO输入输出流中的各种字节流,字符流类
字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...
- java io 输入输出流
数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...
- 自己动手写java 字节流输入输出流
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流. "流是磁盘或其它外围设备中存储的数据的源点或终点." ...
随机推荐
- 关于签名sign的坑
在有些支付文档或其他文档都会要求签名验证 /** * description:签名 * function name:sign * @param $data * @return string */fun ...
- IIS配置支持跨域请求
对于初次在IIS部署网站的同学,很容易忽略或不知道如何配置使其网站支持跨域请求,这里介绍一个最基础的方式,配置HTTP响应标头. 在IIS上选择HTTP响应标头,选择添加自定义响应标头,通常我们会添加 ...
- graph_base_pic_segmentation里面的细节和代码
https://github.com/zhangbo2008/graph_base_pic_segmentation_analyzing/blob/master/README.md
- ldd源码编译出现的问题
1.Fix it to use EXTRA_CFLAGS. Stop 1). # make KBUILD_NOPEDANTIC=12). Relace all CFLAGS with EXTRA_C ...
- 【第一次作业】&&软件工程大一班---甘昀
这个作业属于哪个课程: <课程的链接点这里> 这个作业要求在哪里: <作业要求的链接点这里> 我在这个课程的目标是: 学会软件开发的流程和思想 这个作业在哪个具体方面帮助我 ...
- SHELL脚本学习-练习写一个脚本4
#编写一个脚本时,自动生成”#!/bin/bash”这一行和相关注释信息. 把以下的代码保存为一个sh文件,比如test.sh , 新建脚本是使用 bash test.sh newfile 即可. ...
- pandas 读写 Excel 格式的数据
import pandas as pd #读入数据: df = pd.read_excel('data_in.xlsx') #导出数据: writer = pd.ExcelWriter('data_o ...
- win10与虚拟机fedora14使用samba文件共享
参考路径:http://blog.sina.com.cn/s/blog_ae9507be01017tyz.html 最近需要配置samba,试了好多次,终于搞定.奉上配置及共享文件的过程,以供参考. ...
- Springboot & Mybatis 构建restful 服务二
Springboot & Mybatis 构建restful 服务二 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务一 2 restful ...
- 《Linux就该这么学》第十五天课程
本次课所学习的是DNS域名解析服务! 下面提供一些DNS有关的内容 如需进一步学习,请前往https://www.linuxprobe.com/chapter-13.html 工作模式: 1.主服务器 ...