现在我要写一个通讯录,要用到FileInputStream\FileOutputStream。
要有姓名,地址,联系方式,
因为我是刚刚学的不知道如何下笔,郁闷啊~~~
请名位指教了~~~

解决方案 »

  1.   

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;public class Notepad {

    public void input(File f) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    FileWriter fw = null;
    String s = "";
    try {
    fw = new FileWriter(f);
    System.out.println("请输入数据,以分号结尾");
    s = br.readLine();
    if(s!=null&&s.endsWith(";")) {
    fw.write(s);
    fw.flush();
    } else {
    System.out.println("输入必须以分号结尾!");
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    if (fw!=null) fw.close();
    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    }

    public void output(File f) {
    FileReader fr;
    char[] charbuff = new char[16];
    int count = 0;
    String s = "";
    try {
    fr = new FileReader(f);
    while(count>=0) {
    count = fr.read(charbuff, 0, charbuff.length);
    if(count>=0) {
    s = new String(charbuff);
    s = s.substring(0, count-1);
    System.out.print(s);
    }
    }
    System.out.println();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    int i = 0;
    String s = "";
    File f = new File("d://javacode/note.dat");
    Notepad np = new Notepad();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    while(true) {
    System.out.println("请选择输入!");
    System.out.println("1.输入数据");
    System.out.println("2.读取数据");
    System.out.println("3.退出");
    try {
    s = br.readLine();
    } catch (IOException e) {
    e.printStackTrace();
    }
    if(s.equals("1")||s.equals("2")||s.equals("3")) {
    i = Integer.parseInt(s);
    }
     
    switch(i) {
    case 1:
    System.out.println("选择1");
    np.input(f);
    break;
    case 2:
    System.out.println("选择2");
    np.output(f);
    break;
    case 3:
    System.out.println("选择3");
    try {
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    System.exit(0);
    break;
    }
    }
    }}字符界面的,只能保存一条记录。
      

  2.   

    直用到FileInputStream/FileOutputStream能不能行?
    谢谢了
      

  3.   

    import java.io.*;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    //phrase 内容
    //dirname路径
    //filename文件名
    public class userdata {
        public static void userdata(String phrase, String dirname, String filename) {
            File dir = new File(dirname);
            File aFile = new File(dir, filename);
            FileOutputStream outputFile = null;
            try {
                outputFile = new FileOutputStream(aFile, true);
            } catch (FileNotFoundException e) {
                e.printStackTrace(System.err);
            }
            FileChannel outChannel = outputFile.getChannel();
            ByteBuffer buf = ByteBuffer.allocate(phrase.length() * 2);
            buf.clear();
            for (char ch : phrase.toCharArray()) {
                buf.putChar(ch);        }
            buf.flip();
            buf.clear();
            try {
                outChannel.write(buf);
                outputFile.close();
                buf.clear();
            } catch (IOException e) {
                e.printStackTrace(System.err);
            }
        }
    }