//编写一个程序,将10个整型数据写入文件,再读出来求和。
import java.io.*;
public class FilterStreamInOut
{
public static void main(String[]args)throws IOException
{
OutputStream out=new FileOutputStream("number.txt");
InputStream ips=new FileInputStream("number.txt");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input the integer number(end with -1): ");
String str=in.readLine();
    byte b=0;
    while(!str.equals("-1"))
    {
     b=Byte.parseByte(str);
     out.write(b);
     str=in.readLine();
        
    }
    int a=ips.read();
    int sum=0;
    while(a!=-1)
    {
     sum+=a;
     System.out.print(a+" ");
     a=ips.read();
    }
    System.out.println();
    System.out.println("the sum is "+sum);
    }

}为什么写入文件的是一堆乱码???
知道的请指正一下,谢谢!

解决方案 »

  1.   

    过程应该是这样的:
    首先一边从System.in读取数据,一边解析成整型并写入文件,然后文件流instream.close然后打开文件流outstream ,读取数据
      

  2.   

    package org.possible.io;import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;public class IoTester1 { /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    FileOutputStream fos=new FileOutputStream("org/possible/io/int.txt");
    DataOutputStream dos=new DataOutputStream(fos);
    System.out.println("请输入要写入的数值,以-1结束!!!");
    while(true){
    String str=new BufferedReader(new InputStreamReader(System.in)).readLine();
    int i=0;
    try{
    i=Integer.parseInt(str);
    }catch(RuntimeException e){
    throw new RuntimeException("只能传入正确数值!!!");
    }
    if(i==-1)
    break;
    dos.writeInt(i);
    }
    dos.close();
    FileInputStream fis=new FileInputStream("org/possible/io/int.txt");
    DataInputStream dis=new DataInputStream(fis);
    int totalBytes=dis.available();//写入总字节数
    int sum=0;//要计算的总和
    while(totalBytes>0){
    sum+=dis.readInt();//每次读4字节
    totalBytes=totalBytes-4;
    }
    dis.close();
    System.out.println(sum);
    }}
      

  3.   


    在我机器上运行,int.txt打开后也是乱码,怎么修改
      

  4.   

    package org.possible.io;import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;public class IoTester2 { /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    FileWriter fw=new FileWriter("org/possible/io/int2.txt");
    PrintWriter bw=new PrintWriter(fw);
    System.out.println("请输入要写入的数值,以-1结束!!!");
    while(true){
    String str=new BufferedReader(new InputStreamReader(System.in)).readLine();
    int i=0;
    try{
    i=Integer.parseInt(str);
    }catch(RuntimeException e){
    throw new RuntimeException("只能传入正确数值!!!");
    }
    if(i==-1)
    break;
    bw.println(str);
    }
    bw.close();
    FileReader fr=new FileReader("org/possible/io/int2.txt");
    BufferedReader br=new BufferedReader(fr);
    int sum=0;//要计算的总和
    String str=null;
    while((str=br.readLine())!=null){
    sum+=new Integer(str);//每次读4字节
    }
    br.close();
    System.out.println("总和是:"+sum);
    }}
    ps:LZ去看看书吧,什么是字节流,什么是字符流