Java文件编程 文本文件和异常处理

Set,List 集合

Set不允许重复

文本文件

读文件

FileInputStream fis = new FileInputStream("a.txt");//读入文件

while(true)
{
    int r = fis.read();//读入一个个字节数据,-1代表流结束
    //读入的是ASCII码
    if(r == -1) break;
    System.println((char)r);
}
import java.io.*

public class 
{
    public ststic void main(string[] args)
    {
        FileReader fr = new FileReader(args[0]);
        int c = 0;
        while( (c = fr.read()) != -1)
        {
            System.out.print((char)c);//此处使用println()会读一个输出一个换行
        }
        fr.close();
    }
}

相似的,有Reader,Writer类,区别是处理单位是字符

Class Reader有三个read()函数:读数据,读从某位置开始的数据,读从某位置开始的定长数据

文本文件常使用读一行

import java.io.*

public class 
{
    public ststic void main(string[] args)
    {
        FileReader fr = new FileReader("a.txt");
        BufferedReader br = new BufferedReader(fr);
        
        String s;
        int c = 0;
        while( (s = br.readline()) != -1)
        {
            System.out.println(s);//此处使用println()会读一个输出一个换行
        }
        fr.close();
    }
}

注意:FileReader可以执行差,因为它使用默认编码

解决方法:用FileInputStream

FileInputStream fr = new FileInputStream("a.txt");
InputStreamReader isr = new InputStreamReader(fis,"GBK");
FileOutputStream fos = new FileOutputStream("a.txt");

OutputStreamWriter osw = new OutputStrreamWriter(fos,"GBK");

osw.write("中国梦");
osw.close();

PrintWriter类 大量重载print和println函数

配置文件

java.util.Properties
//配置文件
a.properties

server=www.baidu.com
port=80


//properties 全是键值对,键值都是字符串

//写入键值对
Properties p = new Properties();
p.setProperty("server","www.baidu.com");
p.setproperty("port","80");
p.store(new FileOutputStream("a.properties"),"");

//读出键值对
Properties r = new Properties();
p.load(new FileInputStream("a.properties"));

String server = p.getProperty("server");
int port = Integer.parseInt(p.getProperty("port"));

p.list(System.out);//在控制台输出

学生保存到文件

list<student> list = new ArrayList<student>();

void write(List<student> list)
{
    FileOutputStream fos = new FileOutputStream("student.txt");
    OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");
    PrintWriter out = new PrintWriter(osw);

    Itertor<Stident> it = list.inerator();
    while(it.hasNext())
    {
        Stident s = it.next();
        out.println(s.getId() + "," + s.getName() + "," + s.getSex);
    }
}

异常处理

Throwable类

    派生:Exception

                   RuntimeException

                   IOException

                          FileNotFoundException

                   ......

               Error:不处理,虚拟机宕机

和C++一样try catch中,先放具体的错误,再放抽象的错误

注意:在Java中,不可到达语句算作语法错误,如:while(false),return 0;retuen 1;

运行异常编译器不作处理,由代码引起

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值