Java学习笔记之输入输出流(一) File、文件字节流、文件字符流

以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言

File 类

 

创建File对象的构造方法有以下3个:

File(String filename);

File(String directoryPath,String filename);

File(File f,String filename);

 

文件的属性

 

public String getName();             获取文件的名字

public boolean canRead();            判断文件是否是可读的

public boolean canWrite();           判断文件是否可以被写入

public boolean exists();             判断文件是否存在

public long length();                 获取文件的长度

public String getAbsolutePath();    获取文件的绝对路径

public String getParent();           获取文件的父目录

public boolean isFile();             判断文件是否是一个普通文件,而不是目录

public boolean isDirectory();       判断文件是否是一个目录

public boolean idHidden();           判断文件是否是隐藏文件

public long lastModified();          获取文件最后的修改时间(毫秒数)

 

例:

package com.File_1;

import java.io.*;

public class Lianxi {

public static void main(String[] args) {

// TODO Auto-generated method stub

File file = new File("e:\\heool.txt");

System.out.println("文件的绝对路径:"+file.getAbsolutePath());

System.out.println("文件的名字:"+file.getName());

System.out.println("文件的大小:"+file.length());

System.out.println("文件的路径"+file.getPath());

File f = new File("e:\\nihao\\nana.txt");

File fi = new File("e:\\nihao");        //

if(!fi.isDirectory()){

fi.mkdir();                                        //创建文件夹

}

else{

System.out.println("已经存在!");

}

if(!f.exists()){

try {

f.createNewFile();                              //创建文件

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

else{

System.out.println("不需要创建!");

}

//File fi = new File("f:\\你好");

//if(!fi.exists()){

//fi.mkdir();

//}

//else{

//System.out.println("已经存在!");

//}

}

 

}

答案:

文件的绝对路径:e:\heool.txt

文件的名字:heool.txt

文件的大小:0

文件的路径e:\heool.txt

已经存在!

不需要创建!

 

目录

 

File对象调用方法pulic boolean mkdir()创建一个目录,如果创建成功,返回true,否则返回false(如果该目录存在将返回false).

 

如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录。

public String[] list(); 用字符串的形式返回目录下的所有文件

public File[] listFiles(); 用File对象形式返回目录下的所有文件

 

有时需要列出目录下指定类型的文件,可以调用File类的下列方法

public String[] list(FilenameFilter obj); 用字符串的形式返回目录下指定烈性的所有文件。

public File[] listFiles(); File对象形式返回目录下指定类型的所有文件

 

上述两个方法的参数FilenameFilter是一个接口,该接口有一个方法:

public boolean accept(File dir,String name);

 

:

/**

 *找出当前文件夹下的".txt"文件,并将他们打印出来

 */

package com.File_1;

 

import java.io.*;

public class nihao {

public static void main(String []args){

File file = new File("e:\\迅雷下载");

if(file.isDirectory()){

Filefilr fil = new Filefilr();

String fileName[] = file.list(fil);

for(String s:fileName){

System.out.println(s);

}

}

}

}

class Filefilr implements FilenameFilter{

public boolean accept(File dir,String name){        //方法重写

return name.endsWith(".txt");       //与name字符串后几位是".txt"的返回true

}

}


答案:

heool.txt

nana.txt
 

文件的创建和删除

public boolean createNewFile(); 创建一个新的文件

public boolean delete();         删除当前文件

 

运行可执行程序

当执行本地机上的可执行文件是,可以使用java.lang包中的Runtime类。首先使用Runtime类声明一个对象。例如:

Runtime ec;

然后使用该类的getRuntime()静态方法创建这个对象:

Runtime ec = Runtime.getRuntime();

ec可以调用exec(String command)方法打开本地机上的可执行文件或执行一个操作。

例:

/**

* 练习Runtime,打开一个可执行文件

*/

package com.File_1;

 

import java.io.*;

 

public class Openexe {

public static void main(String[] args) {

// TODO Auto-generated method stub

try{

Runtime ce = Runtime.getRuntime();

ce.exec("f:\\安装包\\QQ8.1_v8.1.17202.0.exe");

}

catch(Exception e){

System.out.println(e);

}

//**********************************************************************

                      //或者以下方法也可以=_=

//**********************************************************************

//try{

//Runtime ce = Runtime.getRuntime();

//File file = new File("f:\\安装包\\QQ8.1_v8.1.17202.0.exe");

//ce.exec(file.getAbsolutePath());

//}

//catch(Exception e){

//System.out.println(e);

//}

}

 

}

 

文件字节流(必须做异常处理)

如果程序对文件的操作比较简单,那么可以使用FileInputStreamFileOutputStream类创建的流对文件进行读/写操作

文件字节输入流

FileInputStream 类创建对象的构造方法:

FileInputStream(String name);

FileInputStream(File file);

通过调用read()方法读出程序中的数据;

文件字节输入流调用read()方法顺序的读取源中的单个字节数据,该方法返回字节值(0~255的一个整数),如果读到文件的末尾,该方法返回-1.

int read(byte b[]);

int read(byte b[],int off,int len);

读取len个字节,并从字节数组b[]的第off个位置开始存放。

:

/**

 * 将文件中的内容显示在屏幕上

 */

package com.File_1;

 

import java.io.*;

 

public class wenjianzifchuruliu {

 

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

File file = new File("d:\\rrr.txt");

FileInputStream fis = new FileInputStream(file);

byte b[] = new byte[1024];

int n = 0;

while((n=fis.read(b))!=-1){

String s = new String(b,0,n);

System.out.println(s);

}

fis.close();

}

 

}

答案:

nihao

dajiahao

jaj

hiuhf

oiuljl

ljhkfs

 

字节输出流

FileOutputStream 类创建的对象称为文件字节输出流,文件字节输出流提供了基本的文件写入能力。

FileOutputStream(String name);

FileOutputStream(File file);

write(byte b[]);          以字节为单位向文件顺序写入数据

FileOutputStream流的目的地是文件,所以文件输出流调用write(byte b[])方法把字节写到文件中。

public void write(byte b[]);

public void write(byte b[],int off,int len);

如果FileOutputStream流要写的文件不存在,该流就会先创建文件,然后在向文件写如内容。

例:

/**

 * 向"d:\\xunleixiazai.txt"中写入内容,熟悉FileOutputStream类的用法

 */

package com.File_1;

 

import java.io.*;

 

import com.Stringbuffer.buffer;

 

public class Fileoutputstream {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

File file = new File("d:\\xunleixiazai.txt");

byte b[] = "你好,近来忙吗?".getBytes();

try {

FileOutputStream fos = new FileOutputStream(file);

fos.write(b);

System.out.println(new String(b));

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

 

文件字符流

字符输入流FileReader的构造方法是:

FileReader(String filename);

FileReader(File filename);

 

int read(); 字符输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535的一个整数)如果未读出字符返回-1.

int read(char b[]);

int read(char b[],int off,int len);

字符输入流和字符输出流的readwrite方法使用字符数组读/写数据,即以字符为基本单位处理数据。

字符输出流FileWriter的构造方法分别是:

FileWriter(String filename);

FileWriter(File filename);

 

void write(int n); 字符输出流调用该方法向文件写入一个字符。

void write(char b[]);

void write(char b[],int off,int len);

 

:

/**

 * 将一句话写入文件,然后读出,熟悉FileReader类和FileWriter类的用法

 */

package com.File_1;

 

import java.io.*;

 

public class wenjainzifuliu {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

File file = new File("e:\\hello.txt");

char s[] = "我是个中国人,a good boy!".toCharArray();

try {

FileWriter fw = new FileWriter(file);

fw.write(s);

fw.close();

FileReader fr = new FileReader(file);

int n = 0;

char a[] = new char[1024];

while((n=fr.read(a))!=-1){

String str = new String(a);

System.out.println(str);

}

fr.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


答案:

我是个中国人,a good boy!


 


你可能感兴趣的:(Java学习笔记)