流的文件操作(File)
一、流的分类:
1、流按照方向分类:分为输入流和输出流,流的操作是相对于内存而言。
输入流的定义:当我们从数据源中将数据读取到内存中就称为输入流,也叫读取流。
输出流的定义:当我们将内存中处理好的数据写入数据源,就称为输出流,写入流。
2、流按照内容分类:可以分为字节流、字符流、对象流。
数据的传输在底层都是以二进制的方式传输,所以无论是哪种流,其实都是字节流。而字符流和对象流只是在字节的基础上做了一层封装,以便于对字符数据和对象数据进行操作。
二、流的父类
1、所有字节流的父类都是:InputStream和OutputStream;
2、所有字符流的父类都是:Reader和Writer。
三、流的操作步骤
1、建立流。所谓建立流就是建立内存和数据源之间传输数据的通道。
2、操作流。操作传输的数据。
3、关闭流。关闭内存和数据源之间的通道,释放资源。
例:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class StreamTest{
public StreamTest(){
InputStream in = null;
try {
//建立流
in = new FileInputStream("info.txt");
int data = 0;
//操作流,一次读取一个字节。如果为-1,那么表示读取完毕
while((data = in.read()) != -1){
System.out.println(data);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
//关闭流
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
备注:流使用完毕后,必须关闭,如果不关闭会浪费内存资源,另外,写入流有可能写不进数据。关闭的顺序必须是先建立的流后关闭,后建立的流先关闭。
四、建流的目的是:完成内存数据和磁盘数据的转换。
五、以下是部分流的文件操作
//第二个参数为true,表示已追加的方式向资源文件中写入数据,运行代码几次,资源文件就会追加几次数据,并且不会覆盖资源文件原来的数据。
OutputStream out = null;
out = new FileOutputStream("info.txt",true);
out.write("Java技术".getBytes());
注:、当使用OoutputStream写入流时,如果文件不存在,读取流会抛出FileNotFoundException异常。写入流会自动创建新文件。但是前提是该文件所在的目录必须存在。
//创建文件对象
File f = new File("c:/abc/a.txt");
//或得文件名
String name = f.getName();
System.out.println(name);
//得到文件所在目录
String dir = f.getParent();
system.out.println(dir);
//得到文件的绝对路径
String path = f.getAbsolutePath();
System.out.println(path);
//判断文件对象所代表的文件或目录是否存在,如果存在,结果就为true
boolean isEx = f.exists();
System.out.println(isEx);
//判断文件对象代表的是否是存在 的文件
System.out,pritln(f.isFile());
//判断文件对象代表的是否是目录
System.out.println(f.isDirectory());
//得到一个目录中偶有文件列表,包含文件和目录,但是不包含子目录中的内容
File f = new File("D:/KwDownload");
File[] fs = f.listFiles();
for(File ft : fs){
System.out.println(ft.getName());
}
//删除指定目录下的文件
File f = new File("D:/KwDownload/a.docx");
f.delete();
//删除文件对象所代表的文件或目录,前提必须是空文件才删得掉
File f = new File("D:/KwDownload/aaa");
f.delete();
//得到指定目录下所有文件及子文件夹中的文件
public static void (String[] args){
list(new File("D:/KwDownload"));
}
public static void list(File dirFile){
File[] fs = dirFile.listFiles();
for(File f : fs){
if(f.isFile()){
System.out.println(f.getAbsolutePath());
}else{
list(f)
}
}
}
//创建制定路径的目录
File f = new File("D:/aaa");
f.mkdir();
//创建文件选择对象
JFileChooser jfc = new JFileChooser;
流的文件操作(File)的更多相关文章
- JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile
Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
c#中@标志的作用 参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...
- C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流 FileStream 可读可写 大文件 释放 StreamReader 读取 释放 StreamWriter 写入 释放 using 中释放 File 可读可写 小文件 操作文 ...
- java IO流 Zip文件操作
一.简介 压缩流操作主要的三个类 ZipOutputStream.ZipFile.ZipInputStream ,经常可以看到各种压缩文件:zip.jar.GZ格式的压缩文件 二.ZipEntry ...
- JAVA中的I/O流以及文件操作
一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...
- java I/O框架 (二)文件操作(File)
1.介绍 java io中最常操作的就是我们电脑中的文件,将这些文件以流的形式本地读写,或者上传到网络上.java中的File类就是对这些存储于磁盘上文件的虚拟映射,这也体现了java面向对象的思想, ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
- java IO流 对文件操作的代码集合
Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...
- C语言文件操作 FILE结构体
内存中的数据都是暂时的,当程序结束时,它们都将丢失.为了永久性的保存大量的数据,C语言提供了对文件的操作. 1.文件和流 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特 ...
随机推荐
- C#设计模式之工厂
IronMan之工厂 前言 实用为主,学一些用得到的技术更能在如今的社会里保命. 虽然在日常的工作中设计模式不是经常的用到,但是呢,学习它只有好处没有坏处. 设计模式像是一种“标签”,它是代码编写者思 ...
- ajax的post方式和get方式比较,以及需要注意的地方
说明:测试所用的js框架为kissy,后端语言为php 写在前面 目前我们可以将ajax请求的情形按照不同的类型进行分类,比如页面编码:utf-8 or gbk; ajax 传参方式 post or ...
- Ubuntu 16 安装ElasticSearch
首先安装Java,参见博客:http://www.cnblogs.com/1zhk/p/6056406.html 下载ElasticSearch安装包 curl -L -O https://artif ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
- LeetCode OJ1:Reverse Words in a String
问题描述: Given an input string, reverse the string word by word. For example,Given s = "the sky is ...
- iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)
(via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...
- Spring学习记录(二)---容器和bean属性配置
下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...
- C#中日期记忆日期的格式化,日期格式化说明
参数format格式详细用法:格式字符 关联属性/说明 d ShortDatePattern D LongDatePattern f 完整日期和时间(长日期和短时间) F FullDateTimePa ...
- 研究一下javascript的模块规范(CommonJs/AMD/CMD)
最近写react需要使用nodejs作为开发环境,需要通过npm安装一些第三方的依赖库,因此慢慢感觉到nodejs基础薄弱对我带来了一些不安全感,尤其是javascript模块这一块听到了很多概念,比 ...
- SQL Server中的高可用性(3)----复制
在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述.但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性.本 ...