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

来源:互联网 发布:网络门禁 编辑:程序博客网 时间:2024/06/17 02:28


晚上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();}}}



1 0
原创粉丝点击