java流、文件以及IO
读写文件
一个流被定义为一个数据序列。输入流用于从源读取数据,输出流用于向目标写数据。
输入流和输出流的类层次图。

FileInputStream
FileInputStream用于从文件中读取数据,它的对象可以用关键字new创建,
InputStream file = new FileInputStream("D:\BI\201603\MyBi");
或者
File file = new File("D:\BI\201603\MyBi");
InputStream file = new FileInputStream(f);
InputStream提供的对流的操作的方法:
| 序号 | 方法及描述 |
|---|---|
| 1 | public void close() throws IOException{} 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。 |
| 2 | protected void finalize()throws IOException {} 这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。 |
| 3 | public int read(int r)throws IOException{} 这个方法从InputStream对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。 |
| 4 | public int read(byte[] r) throws IOException{} 这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。 |
| 5 | public int available() throws IOException{} 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。 |
FileOutputStream
FileInputStream用来创建一个文件并向文件中写数据。如果目标文件不存在,该流回创建文件。
OutputStream f = new FileOutputStream("D:\BI\201603\MyBi");
或者
File file = new File("D:\BI\201603\MyBi");
OutputStream f = new FileOutputStream(file);
OutputStream类提供了一下方法操作文件
| 序号 | 方法及描述 |
|---|---|
| 1 | public void close() throws IOException{} 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。 |
| 2 | protected void finalize()throws IOException {} 这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。 |
| 3 | public void write(int w)throws IOException{} 这个方法把指定的字节写到输出流中。 |
| 4 | public void write(byte[] w) 把指定数组中w.length长度的字节写到OutputStream中。 |
实例
package per.test; import java.io.*;
public class fileStreamTest{
public static void main(String[] args) {
try {
byte[] bWrite = {1,11,2,3};
// OutputStream os = new FileOutputStream("D:\\BI\\test.txt");//不存在,会自动新建
// for (int x=0;x<bWrite.length;x++) {
// os.write(bWrite[x]);//以二进制形式写进文件里,有乱码问题
// }
// os.close(); File file = new File("D:\\BI\\test.txt");
FileOutputStream os = new FileOutputStream(file);
// 构建FileOutputStream对象,文件不存在会自动新建
OutputStreamWriter writer = new OutputStreamWriter(os, "UTF-8");
// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上默认gbk
writer.append("你说起那条回家的路,路上有开满鲜花的树");
writer.close();
//关闭写入流,同时会把缓冲区内容写入文件
os.close();
// 关闭输出流,释放系统资源 // InputStream is = new FileInputStream("D:\\BI\\test.txt");
// int size = is.available();
// for (int i=0;i<size;i++) {
// System.out.print((char)is.read()+" ");//有乱码问题
// }
// is.close();
FileInputStream is = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(is,"uft-8");//与读入时候的编码一致
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
// 转成char加到StringBuffer对象中
}
System.out.println(sb.toString());
reader.close();
// 关闭读取流
is.close();
// 关闭输入流,释放系统资源
}catch (IOException e){
System.out.print("IOException");
} }
}
DataInputStream类和DataOutputStream类
数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型以及与机器无关方式将Java基本数据类型写到底层输出流。
下面的构造方法用来创建数据输入、输出流对象。
DataInputStream dis = DataInputStream(InputStream in);
DataOutputStream out = DataOutputStream(OutputStream out);
实例
package per.test; import java.io.*;
public class fileStreamTest{
public static void main(String[] args) {
try {
DataInputStream d = new DataInputStream(new
FileInputStream("D:\\BI\\test.txt")); DataOutputStream out = new DataOutputStream(new
FileOutputStream("D:\\BI\\test1.txt")); String count;
while((count = d.readLine()) != null){
String u = count.toUpperCase();
System.out.println(u);
out.writeBytes(u + " ,");
// out.writeInt(Integer.parseInt(u));
// out.writeFloat(Float.parseFloat(u));
}
d.close();
out.close();
}catch (IOException e){
System.out.print("IOException");
} }
}
File类创建目录
File类中有两个方法可以用来创建文件夹:
- mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
- mkdirs()方法创建一个文件夹和它的所有父文件夹。
import java.io.File;
public class CreateDir {
public static void main(String args[]) {
String dirname = "/tmp/user/java/bin";
File d = new File(dirname);
d.mkdirs();//递归创建目录
}
}
File类读取目录
实例--查看一个路径是否是文件夹,以及该文件夹下有哪些文件以及子文件夹
import java.io.File;
public class DirList {
public static void main(String args[]) {
String dirname = "/tmp";
File f1 = new File(dirname);
if (f1.isDirectory()) {//该对象代表一个目录
System.out.println( "Directory of " + dirname);
String s[] = f1.list();//提取该对象包含的文件和文件夹的列表。
for (int i=0; i < s.length; i++) {
File f = new File(dirname + "/" + s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + " is a directory");
} else {
System.out.println(s[i] + " is a file");
}
}
} else {
System.out.println(dirname + " is not a directory");
}
}
}
java流、文件以及IO的更多相关文章
- java 流 文件 IO
Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...
- 文件和IO流
摘要:本文主要介绍了Java的文件处理以及常用的IO流操作. 文件操作 概念 File是数据源(保存数据的地方)的一种,可以表示一个文件,也可以表示一个文件目录. File类只能对文件和文件夹进行创建 ...
- Java 流(Stream)、文件(File)和IO
Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...
- Java笔记:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- Java - 17 Java 流(Stream)、文件(File)和IO
Java 流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型. ...
- Java总结:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- Java ——流(Stream)、文件(File)和IO
本节重点思维导图 示例:将指定的字符写到文件中 public static void main(String[] args) { try { //1.创建一个空的文件 File file = new ...
- Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutpu ...
- java 中 “文件” 和 “流” 的简单分析
java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 / ...
随机推荐
- php 02
变量的数据类型 一.类型 标量类型: 布尔型 整型 浮点型 字符串 复合类型: 数组 对象 特殊类型: 资源 null 1. 布尔型 true false 以下值认为是false 其他值都认 ...
- 关于com工程依赖的一些总结
作者:朱金灿 来源:http://blog.csdn.net/clever101 一是com组件工程的依赖设置.比如A这个组件工程要使用B组件工程的类,要如何设置呢?具体就是先把在A工程里加上B工程的 ...
- [转] Adobe acrobat 破解教程
最新版的Adobe Acrobat DC Pro可以使我们更方便的管理和编辑PDF文档,现在我为大家带来Adobe Acrobat DC Pro安装及破解教程,供大家安装和使用. 工具/原料 Ad ...
- 在ActionBar中,即便设置showAsAction="always",items仍然在overflow中显示的问题
今天很是苦恼,明明设置了android:showAsAction="always",但是所有的items全部都显示在overflow中,然后在官网发现了答案. 如果你为了兼容 An ...
- SqlServer图形数据库初体验
SQL Server2017新增了一个新功能叫做图形数据库.图形指的拓扑图形,是一些Node表和Edge表的合集,Node对应关系数据库中的实体,比如一个人.一个岗位等,Edge表指示Node之前的关 ...
- TestNG并发测试包
https://www.yiibai.com/testng/basic-annotations.html
- OpenSSL命令---s_client
http://blog.csdn.net/as3luyuan123/article/details/16812071 用途: s_client为一个SSL/TLS客户端程序,与s_server对应,它 ...
- 关于添加IBDesignable实时building很卡问题的解决
公共库加了@IBDesignable,可以实时预览图标 但是有个问题,每次打开XIB的时候都会Building,会造成电脑会很卡 有个解决方法,在xcode的Editor下拉框取消auto refre ...
- python_78_软件目录结构规范
一定要看http://www.cnblogs.com/alex3714/articles/5765046.html #print(__file__)#打印的是文件的相对路径 import os pri ...
- python_42_文件补充
m=['红烧肉\n','熘肝尖','西红柿炒鸡蛋','腊八粥','油焖大虾'] fname=input("请输入文件名:")#输入xxx f=open(fname,'w',enco ...