Java学习笔记——Java输入与输出

Java中重要的输入/输出类

  • File类
  • InputStream类
  • OutputStream类
  • FilterStream类
  • 增强的多字节类

文件或目录信息的处理—File类

public File(String pathname):它的用处是使用指定的路径,创建一个File对象。
public File(String parent, String
child):使用指定的路径和字符串创建一个File类。
public File(File parent, String child):使用一个File类的对象parent与字符串创建一个新的File对象。通过以上的构造器来构造File对象。然后,使用这个类提供的方法函数和属性值,进行文件和目录的操作。

File类常用的方法函数

public boolean canread()测试该文件是否可读
public boolean canwrite()测试该文件是否可写
public boolean createNewFile()测试该文件目录是否存在
public static File createTempFile(String prefix,String suffix)在临时目录中,创建以prefix为文件名,suffix为扩展名的临时文件
public static File createTempFile(String prefix,String suffix,File directory)在目录directory中创建以prefix为文件名,suffix为扩展名的临时文件
pubilic boolean delete()删除当前对象所指文件,删除成功返回true,否则返回false
public void deleteOnExit()JVM(虚拟机)终止时。删除当前对象所指定的文件
public boolean exists()测试当先对象所指文件是否存在,若存在返回true,若不存在返回false
public String getName()获取文件或目录的名称(不包含路径)
public String getParent()获取文件所在的目录名称
public String getPath()获取文件或目录名称
public boolean isDirectory()测试当前对象是否为目录,若当前对象为目录,则返回true,否则返回false
public boolean isFile()测试当先对象是否为文件,若是文件返回true,否则返回false
public boolean isHidden()测试当前对象所代表的文件是否为隐藏文件,若是返回true,否则返回false
public long lastModified()返回文件最后的修改日期,以long型表示
public long length()返回文件的的大小
public String[ ] list()若对象代表的是目录,则将此目录下的文件名存储在String数组中,并返回;若当前对象不是目录,则返回null
public File[ ] listFiles()若对象代表目录,则将此目录中所有文件转换成File对象,再返回File数组中,否则返回null
public boolean mkdir()在当前对象指定的路径上创建一个目录
public boolean renameTo(File dest)将当前所指定的文件名改为dest
public boolean setReadOnly()将当前文件设为只读

文件处理方法的应用

01 import java.io.*02 ///创建一个文件类
03 ///通过getName、getParent、getPath来获取文件路径和文件名等信息
04 public class file
05 {
06 public static void main(String[]args)
07 {
08 File f=new File"d:\\""file.txt");
09 System.out.println(f.getName());
10 System.out.println(f.getParent());
11 System.out.println(f.getPath());
12 }
13 }

运行效果

file.txt
d:\
d:\file.txt

文件和目录的完全处理

01 import java.io.*02 ///通过print方法来判断这个文件类对象的性质
03 ///通过print1方法来获取文件对象的信息
04 ///通过print2方法来获取文件对象的信息
05 public class file1
06 {
07 public void print(File f)
08 {
09 if(f.isDirectory())
10 {
11 System.out.println("这是一个目录!");
12 }
13 else
14 {
15 System.out.println("这不是一个目录!");
16 }
17 if(f.exists())
18 {
19 System.out.println("这个文件是存在的!");
20 }
21 else
22 {
23 System.out.println("抱歉,这个文件是不存在的!");
24 try
25 {
26 f.createNewFile();
27 }
28 catchException e){}
29 }
30 }
31 public void print1(File f)
32 {
33 System.out.println(f.getName());
34 System.out.println(f.getParent());
35 System.out.println(f.getPath());
36 }
37 public void print2(File f)
38 {
39 if(f.isFile())
40 {
41 System.out.println(f.lastModified());
42 System.out.println(f.length());
43 }
44 }
45 public static void main(String[]args)
46 {
47 file1 f1=new file1();
48 File f=new File"d:\\filetest""file.txt");
49 f1.print(f);
50 f1.print1(f);
51 f1.print2(f);
52 }
53 }

运行效果

这不是一个目录!
这个文件是存在的!
file.txt
d:\filetest
d:\filetest\file.txt
1251538022515 211

流——stream

流就是数据流向某个对象,并且到达这个对象的过程。

输入流

输入流就是从目标程序中,将数据以流的形式复制到前面说的流对象中,然后,再从流对象中将数据读取出来。

输出流

输出流就是将数据以流的形式复制到流对象中去,再从这些流对象中取出流,写入到目标中。

字节输入流——InputStream

int read()自输入流读取数据并返回0~255之间的一个int整数。若文件读完了或再无可读数据,则返回-1
int read(byte b[ ])从输入流中读取数据并存入字节数组b中。它的返回值是所读取的byte数,若无可读数据则返回-1
int read(byte []b, int off,int len)从输入流中读取len个字节的数据,并存入字节数组b中。它的返回值是所读取的byte数,若无可读数据,则返回-1
void close关闭输入流,并且释放与输入流相关的系统资源

字节输出流——OutputStream

int write(int b)将b转换成字节,然后写到输出流中,每次写一个字节
int write(byte b[])将字节数组中的数据写到输出流中
int write(byte b[],int off,int len)将字节数组中从第off位置开始长度为len个字节的数据写到输出流中
void close()关闭输出流,并且释放与输出流相关的系统资源

文件字节输入流——FileInputStream

public FileInputStream(String name)创建一个FileInputStream对象,从以name为名称的文件名称中读取数据。
public FileInputStream(File file)创建一个FileInputStream对象。从指定的对象file中读取数据。
01 import java.io.*02 ///创建一个文件类f
03 ///创建一个输入流对象fis,并且以f作为参数
04 ///使用循环语句将文本文件中的字符读出
05 public class file3
06 {
07 public static void main(String[]args)throws Exception
08 {
09 File f=new File"d:\\filetest\\file.txt");
10 FileInputStream fis=new FileInputStream(f);
11 char ch;
12 forint i=0;i<f.length();i++13 {
14 ch=char)fis.read();
15 System.out.print(ch);
16 }
17 fis.close();
18 }
19 }

运行效果

addbcnhhvbvbbvnbvncxzxvdfhhtrrgregf

:读者机器上如果没有file.txt文件,则会报错。先手动创建此文件,文件内容与上述结果相同。

用文件字节输出流——FileOutputStream

public fileOutputStream(String name)按照指定字符串创建的目标,创建一个输出流对象,若文件不存在则创建它,若文件存在则覆盖它
public fileOutputStream(File file)使用指定的文件对象创建输出流对象
public fileOutputStream(String name,boolean append)按照指定字符串创建目标,创建一个输出流对象,若文件存在且append为真,新写入的数据将追加在原数据之后,append若为假,新数据会覆盖原来的数据
pubilic FileOutputStream(File file,boolean append()使用指定的文件对象创建输出流对象,若文件存在且append()为真,新写入的数据将追加在原数据之后
01 import java.io.*02 ///创建一个文件类对象f
03 ///创建一个文件输出流对象fos
04 ///使用循环语句往f中写入数据
05 public class file5
06 {
07 public static void main(String[]args)throws Exception
08 {
09 File f=new File"d:\\filetest\\file.txt");
10 FileOutputStream fos=new FileOutputStream(f);
11 forint i=’a’;i<=’z’;i++12 {
13 fos.write(i);
14 }
15 fos.close();
16 }
17 }

运行效果
没有运行结果,但在file.txt中发现了刚才程序自动输入的数据,是26个小写的英文字母。

多字节数据读取类—Filter类

Filter类是一个非常有用的类,它能够进行多字节数据的读取。如果使用了Filter类,则可以方便地处理那些除字节数据类型以外的数据,Filter流对象被分为“FilterInputStream”和“FilterOutputStream”两个流类。

FilterInputStream

数据的数据类型可以是字节、字符、整型、浮点型等。先通过“FileInputstream”类读取数据,然后通过“FilterInputStream”类对数据进行组合,最后再输出数据。

01 import java.io.*02 ///创建一个文件类对象f
03 ///创建一个文件输入流对象fis,并且以f作为参数
04 ///创建一个过滤输入流对象filter,并且以fis作为参数
05 ///通过循环语句将f中的数据读出并且输出
06 public class file7
07 {
08 public static void
main(String[]args)throws Exception
09 {
10 File f=new File"d:\\filetest\\1.txt");
11 FileInputStream fis=new FileInputStream(f);
12 FilterInputStream filter=new FilterInputStream(fis);
13 forint i=0;i<f.length();i++14 {
15
System.out.print(filter.read(i));
16 }
17 fis.close();
18 }
19 }

FilterOutputStream

数据的数据类型可以是字节、字符、整型、浮点型等。先通过“FilterOutputStream”类,将所有这些类型的数据分解成字节类型的数据,再将字节类型的数据通过“FileOutputStream”类向目标对象输出数据。

01 import java.io.*02 ///创建一个文件类对象f
03 ///创建一个文件输出流对象fos,并且以f作为参数
04 ///创建一个过滤输出流对象filter,并且以fos作为参数
05 ///通过循环语句往f中写入数据
06 public class file8
07 {
08 public static void main(String[]args)throws Exception
09 {
10 File f=new File"d:\\filetest\\1.txt");
11 FileOutputStream fos=new FileOutputStream(f);
12 FilterOutputStream filter=new FilterOutputStream(fos);
13 forint i=’a’;i<’z’;i++14 {
15 filter.write(i);
16 }
17 fos.close();
18 }
19 }

增强的多字节输出流——DataOutput

DataOutputStream类的常用方法如下
所示:
boolean writeBoolean(boolean v);
byte writeByte(int v);
charwriteChar(int v);
shortwriteShort(int v);
int writeInt(int v);
long writeLong(long v);
floatwriteFloat(float v);
double writeDouble(double v);
String writeUTF(String str);

增强的多字节输入流——DataInput

boolean readBoolean();
byte readByte();
char readChar();
short readShort();
int readInt();
long readLong();
float readFloat();
double readDouble();
String readUTF();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值