与异常动态绑定=》文件1,在主函数加声明,2,try包裹,处理在一场中,关闭在finally
****************************************************************************************************************************************************
1,文件=>输入流(在函数前抛出异常的声明)public static void main(String args[])throws IOException
定义
File f=new File("F:/","try.java");
if(!f.exists()) 文件的创建需要在异常处理中
{
try
{
f.createNewFile();
}catch(IOException e)
{
}
}
常用功能
f.getPath()
f.getLength();
f.getName();
System.out.println(f.canRead());
System.out.println(f.canWrite());
System.out.println(f.exists());
继承关系
Reader=》inputStreamReader=》FileReader
stringReader
。
。
Writer=》OutStreamWriter=》FileWriter
stringWriter
。
。
2,输入流(在函数前抛出异常的声明)public static void main(String args[])throws IOException
FileWriter fw=new FileWriter(f,true);
try
{
String s="0";
while(s.compareTo("#")!=0)
{
s=in.nextLine();
fw.write(s);
}
}catch(Exception e)
{
}
finally
{
fw.close();//finally中关闭资源
}*/
3,,输出流(在函数前抛出异常的声明)public static void main(String args[])throws IOException
FileReader fr=new FileReader(f);
int s;
try
{
while(fr.ready())
{
s=fr.read();
System.out.print((char)s);
}
}catch(Exception e)
{
}
finally
{
fr.close();
}
}
关键问题=》f.ready()
且读入的是数字=》需要类型转换
****************************************************************************************************************************************************
4字节流继承关系
InputStream-》FilterInputStream-》datainputstream/BufferedInputStream
outputStream-》FilteroutputStream-》dataoutputstream/BufferedoutputStream
FileInputStream
****************************************************************************************************************************************************ObjectInputstream传送一个对象
Student s1=new Student("张三", 1, 15, "化学");
Student s2=new Student("李四", 2, 19, "生物");
ObjectOutputStream out=new ObjectOutputStream(目的地);
out.writeObject(s1);
out.writeObject(s2);
out.close();
ObjectInputStream in=new ObjectInputStream(来源地);
try {
s1=(Student) in.readObject();
s2=(Student) in.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in.close();
****************************************************************************************************************************************************
有时候没有必要传送整个对象的信息,只需要传送一个对象的某个成员的属性信息。
DataOutputStream
输入
DataoutputStream do=new DataOutIOputStream(目的地);
do.writeUTF(s);
do.writeInt(1);//存入流
do.flush();//推送至目的地
do.close();//关闭
void writeChar(int v);//将一个char值以2-byte形式写入到基本输出流中。先写入高字节。
void writeInt(int v);//将一个int值以4-byte值形式写入到输出流中先写高字节。
void writeUTF(String str);//以机器无关的的方式用UTF-8修改版将一个字符串写到基本输出流。该方法先用writeShort写入两个字节表示后面的字节数。
DataInputStream di=new DataInputStream(来源地);
String s=di.readUTF();
int i=di.readInt();
String readUTF();//读入一个已使用UTF-8修改版格式编码的字符串
String readLine();
boolean readBoolean;
int readInt();
byte readByte();
char readChar();
****************************************************************************************************************************************************
BufferedInputStream
package wenben;
import java.io.*;
import java.util.*;
public class File1 {
public static void main(String args[])throws IOException
{
Scanner in=new Scanner(System.in);
File f=new File("F:/","try.java");
if(!f.exists())
{
try
{
f.createNewFile();
}catch(IOException e)
{
}
}
System.out.println(f.canRead());
System.out.println(f.canWrite());
System.out.println(f.length());
System.out.println(f.getName());
System.out.println(f.getPath());
/* FileWriter fw=new FileWriter(f,true);
try
{
String s="0";
while(s.compareTo("#")!=0)
{
s=in.nextLine();
fw.write(s);
}
}catch(Exception e)
{
}
finally
{
fw.close();
}*/
FileReader fr=new FileReader(f);
int s;
try
{
while(fr.ready())
{
s=fr.read();
System.out.print((char)s);
}
}catch(Exception e)
{
}
finally
{
fr.close();
}
}
}