您的位置:首页 > 编程语言 > Java开发

#码神心得_14# java语言之IO操作

2016-07-25 22:01 573 查看
晚上7点下班,吃个饭,搭车过去那边上课就已经8点40分了。于是只上了一个钟的课,累,但还是要坚持下去!

Java语言之IO操作

一、File类的用法

File类功能非常强大,可以对文件或目录进行各种操作,常用的几个方法如下:

1、String getName(): 返回File对象所表示的文件名或者路径名(如果是路径,则返回最后一级子路径名)

2、String getPath(): 返回File对象对应的路径名

3、String getAbsolutePath():返回File对象的绝对路径名(File对象如果是送入一个相对路径,通过这个可以获取绝对路径)

4、String getParent(): 返回File对象对应目录的父目录名

5、boolean renameTo(File newName):重命名File对象

6、boolean exists(): 判断File对象所对应的文件或者目录是否存在

7、boolean createNewFile()创建新的文件

8、String[] list() 列出File对象的所有子文件名和路径名,返回String数组

9、File[] listFile() 列出File对象的所有子文件和路径,返回File数组

10、boolean isFile(): 判断File对象所对应的是否是文件

11、boolean isDirectory(): 判断File对象所对应的是否是目录

12、boolean isAbsolute(): 判断File对象所对应的文件或者目录是否是绝对路径。

13、boolean mkdir()创建目录

二、数据流的基本概念

数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。

数据流又包括输入流与输出流。

输入流:只能从中读取数据:InputStream(字节流) 和 Reader(字符流)

输出流:只能向其写入数据:OutputStream(字节流) 和 Writer(字符流)

以下为IO流基本框架图:



三、 InputStream/OutputStream与Reader/Writer

1、Reade/Writer:字符流,1个字符是2个字节,16位,字符流主要读文本效率比较高。

2、OutputStream/InputStream:字节流,1个字节是8位,字节流主要读二进制文件,图片 ,音频,视频等,就是为了防止出现读取的单位放大,出现无法还原本程序的目的

3、设定编码: InputStreamReader isr = new InputStreamReader(new FileInputStream("F:\\test.java"),"utf-8");

4、字符流转化为字节流:

InputStream in = System. in ; //字节流
InputStreamReader isr = new InputStreamReader(in);  //字节转字符
BufferedReader br = new BufferedReader(isr); //缓冲
5、将txt文件输出到控制台的小程序:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class ReadOne {
public static void main(String[] args) {
// 读取test.txt文件
File file = new File("test.txt");
// 若文件不存在,则创建文件
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// 创建字符输入流
FileReader fileReader;
try {
fileReader = new FileReader(file);
// 创建一个长度为100的“竹筒”
char[] cbuf = new char[100];
// 实际读取的字符数
int read = 0;
// 使用循环来重复“取水”过程
while ((read = fileReader.read(cbuf)) > -1) {
String string = new String(cbuf, 0, cbuf.length);
System.out.println(string);
}
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


课堂作业

作业一:创建一个poem.txt文件,往里面写入一首诗

例如:《静夜思》

提示:此作业考察的是对输出流的使用,可以使用FileOutputStream或者FileWriter

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class WriteTest {
public static void main(String[] args) {
String jingyeshi = "静夜思\n 李白\n床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。";
try {
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("poem.txt")));
out.write(jingyeshi);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


作业二:设计一个程序将当前的源码文件输出到 source.txt

提示:此作业考察的是输入流和输出流的使用,FileInputStream和FileOutStream

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class ReaderTest {
public static void main(String[] args) {
try {
//创建当前java文件的字符输入流
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream("src/mashen14/ReaderTest.java")));
//创建输出流
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("source.txt")));
//用于实际读取的字符
String read ;
//每读一行,就输出一行
while((read=in.readLine()) != null){
out.write(read+"\n");
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息