一,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基础-输入输出流的更多相关文章

  1. Java基础—输入输出流

    流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流——输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分为节 ...

  2. java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  3. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  4. java 对象输入输出流

    对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息. 对象的持久化. 比如:用户信息.              ObjectInputStream   : 对象输入流            ...

  5. 浅谈Java的输入输出流(转)

    Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输 ...

  6. Java:输入输出流 java.io包的层次结构

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  7. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  8. java io 输入输出流

    数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...

  9. 自己动手写java 字节流输入输出流

    数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流.   "流是磁盘或其它外围设备中存储的数据的源点或终点." ...

随机推荐

  1. WebService CXF知识总结

    2018-10-23 <wsdl:service name="Iptv3aBasicService"> 客户端client信息,CXF会生成一个名为Iptv3ABasi ...

  2. 4-2 requests库使用

    打开自己的编辑器 创建一个py文件 这里是首先调用requests库 调用requests  最后打印出response

  3. BUAA_OO第一单元总结

    OO第一单元总结 目录 作业总体分析 代码结构分析 遇到的bug问题    找到bug的方法 结语 一.作业总体分析 尽管这个单元三次作业都是表达式求导,但我认为每次作业的侧重点是不同的. 对于第一次 ...

  4. JavaWeb(一)-Servlet知识

    一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...

  5. LOL新版符文 怎么查看队友的符文配置?

    LOL怎么看其他玩家符文? 像我这种名字都懒的打的, 直接去WeGame复制昵称. 然后在LOL主界面点生涯, 之后搜索 光头强xian生

  6. IntelliJ IDEA 控制台中文乱码解决方案

    配置Intellij的配置文件(在idea安装目录bin目录下) 打开Intellij的根目录,找到下图的两个文件(根据你的系统是32位或64位选择其中一个配置文件),在配置文件中添加: -Dfile ...

  7. Python从入门到精通之Fifth!

    字典  类名:dict   字典是无序的. 字典的创建  info = {"k1":{1:"abc",[1,2,3]},"k2":True} ...

  8. Python_day7

    sys模块 import sys def _add(a, b): return a + b def _sub(a, b): return a - b def _mul(a, b): return a ...

  9. Maven学习3(中央仓库)

    Maven项目在运行的时候,会首先找本地仓库是否有需要的jar,如果没有则去调用远程仓库. 解读Maven在仓库中的存储路径: 1.基于groupId准备路径,将句点分隔符转成路径分隔符,就是将  & ...

  10. Python开发——14.threading模块和multiprocess模块

    一.threading模块 1.threading类的两种创建方法 (1)直接创建 import time import threading def Hi(num): print("hell ...