用fileoutputstream输出和fileinputstram输入
把一个文件中内容写入到另一个文件中哦,我现在刚学这个输入输出问题多多我要完成的是要从textarea输入的内容用fileoutputstream输出保存到一个文件中
遇到了数据类型转化问题,
就想到先用randomaccessfile中的writechars(string)写到一个文件中
再把这个文件用fileinputstrwam输入程序又遇到了问题哦,想每次读取怎么知道已经读到文件结尾,
fileoutputstream的写入函数又是write(byte[])或者是write(int b);类型的自己也糊涂了希望朋友给个程序,完整的给我看看就好了(用用fileoutputstream输出和fileinputstram输入)

解决方案 »

  1.   

    忍痛割爱,把我今天刚完成的记事本程序给你得了,功能还不是很完善,但毕竟可以打开文件(读)和保存文件(写),我用的JDK是1.6的,程序代码如下:
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.datatransfer.*;
    import javax.swing.*;
    import java.io.*;
    public class TextEdit extends Frame implements ActionListener
    {
    static TextEdit frame = new TextEdit();
    static MenuBar mb = new MenuBar();
    static Menu menu1 = new Menu("File");
    static Menu menu2 = new Menu("Edit");
    static Menu menu3 = new Menu("Format");
    static Menu menu4 = new Menu("Help");
    static MenuItem item1 = new MenuItem("New");
    static MenuItem item2 = new MenuItem("Open");
    static MenuItem item3 = new MenuItem("Save As");
    static MenuItem item4 = new MenuItem("Exit");
    static MenuItem item5 = new MenuItem("Cut");
    static MenuItem item6 = new MenuItem("Copy");
    static MenuItem item7 = new MenuItem("Paste");
    static MenuItem item8 = new MenuItem("Font");
    static MenuItem item9 = new MenuItem("About TextEdit 1.0");
    static MenuItem item10 = new MenuItem("Color");
    static Dialog fontDialog = new Dialog(frame, "FontDialog", false);
    static List fontList = new List(7, false);
    static List sizeList = new List(7, false);
    //获取系统字体
    static Font[] font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    static int[] size = new int[23];
    static Button okButton = new Button("OK");
    static Button cancelButton = new Button("Cancel");
    static Label label1 = new Label("Font", Label.CENTER);
    static Label label2 = new Label("Size", Label.CENTER);
    static ColorChooser chooser = new ColorChooser();
    static TextArea textarea = new TextArea();
    static FileDialog openfile;
    static FileDialog savefile;
    static Clipboard clipboard = frame.getToolkit().getSystemClipboard();
    public static void main(String[] args)throws IOException
    {
    menu1.add(item1);
    menu1.add(item2);
    menu1.add(item3);
    menu1.add(item4);
    menu2.add(item5);
    menu2.add(item6);
    menu2.add(item7);
    menu3.add(item8);
    menu3.add(item10);
    menu4.add(item9);
    mb.add(menu1);
    mb.add(menu2);
    mb.add(menu3);
    mb.add(menu4);
    fontDialog.setLayout(null);
    fontDialog.setBounds(80, 80, 300, 350);
    fontDialog.setResizable(false);
    fontDialog.add(fontList);
    fontDialog.add(sizeList);
    fontDialog.add(okButton);
    fontDialog.add(cancelButton);
    fontDialog.add(label1);
    fontDialog.add(label2);
    fontDialog.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    fontDialog.dispose();
    }
    });
    fontList.setBounds(10, 70, 200, 200);
    sizeList.setBounds(230, 70, 50, 200);
    fontList.select(129);
    sizeList.select(5);
    okButton.setBounds(30, 290, 60, 20);
    cancelButton.setBounds(180, 290, 60, 20);
    label1.setBounds(10, 50, 200, 20);
    label1.setBackground(new Color(121, 121, 121));
    label2.setBounds(230, 50, 50, 20);
    label2.setBackground(new Color(121, 121, 121));
    String[] fontName = new String[font.length];
    for(int i = 0; i < font.length; i++)
    {
    fontName[i] = font[i].getName();
    fontList.add(fontName[i]);
    }
    for(int i = 3; i < size.length + 3; i++)
    {
    size[i - 3] = i * 2;
    sizeList.add(Integer.toString(i * 2));
    }
    textarea.setFont(new Font("宋体", Font.PLAIN, 16));
    frame.setMenuBar(mb);
    frame.add(textarea);
    frame.setSize(600, 450);
    frame.setVisible(true);
    frame.setTitle("Text Edit");
    frame.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    item1.addActionListener(frame);
    item2.addActionListener(frame);
    item3.addActionListener(frame);
    item4.addActionListener(frame);
    item5.addActionListener(frame);
    item6.addActionListener(frame);
    item7.addActionListener(frame);
    item8.addActionListener(frame);
    item9.addActionListener(frame);
    item10.addActionListener(frame);
    okButton.addActionListener(frame);
    cancelButton.addActionListener(frame);
    }
      

  2.   

    public void actionPerformed(ActionEvent e)
    {
    Object mi = e.getSource();//打开文件
    if(mi == item2)
    {
    openfile = new FileDialog(this, "Open Dialog", FileDialog.LOAD);
    openfile.setVisible(true);
    try
    {
    if(openfile.getFile() != null)
    {
    String filePath;
    filePath = openfile.getDirectory() + openfile.getFile();
    FileInputStream is = new FileInputStream(filePath);
    InputStreamReader ir = new InputStreamReader(is);
    int c;
    StringBuffer buf = new StringBuffer();
    while((c = ir.read()) != -1)
    {
    buf.append((char)c);
    }
    textarea.append(new String(buf));
    }
    }
    catch(IOException e2)
    {
    }
    }
    else if(mi == item3)//保存文件
    {
    savefile = new FileDialog(this, "Save Dialog", FileDialog.SAVE);
    savefile.setVisible(true);
    if(savefile.getFile() != null)
    {
    try
    {
    String filePath;
    filePath = savefile.getDirectory() + savefile.getFile();
    FileOutputStream os = new FileOutputStream(filePath);
    OutputStreamWriter writer = new OutputStreamWriter(os);
    writer.write(textarea.getText(), 0, textarea.getText().length());
    writer.close();
    os.close();
    }
    catch(IOException e3)
    {
    }
    }
    }
    else if(mi == item4)
    System.exit(0);
    else if(mi == item9)
    JOptionPane.showMessageDialog(frame, "Version: TextEdit 1.0\n Author: Mr. tan",
     "About TextEdit 1.0", JOptionPane.INFORMATION_MESSAGE);
    else if(mi == item6)                                       //拷贝到剪贴板。   
            {
             String temp = textarea.getSelectedText();     //拖动鼠标选取文本。   
                StringSelection text = new StringSelection(temp);   
                clipboard.setContents(text,null);   
             }   
         else if(mi == item5)                               //剪贴到剪贴板。   
         {
          String temp = textarea.getSelectedText();       //拖动鼠标选取文本。   
            StringSelection text = new StringSelection(temp);   
            clipboard.setContents(text,null);   
            int start = textarea.getSelectionStart();   
            int end = textarea.getSelectionEnd();     
            textarea.replaceRange("",start,end)   ;   //从textarea中删除被选取的文本。     
         }   
         else if(mi == item7)                 //从剪贴板粘贴数据。   
         {
          Transferable contents = clipboard.getContents(this);   
            DataFlavor flavor = DataFlavor.stringFlavor;   
            if(contents.isDataFlavorSupported(flavor))   
             try{     
             String str;   
                        str = (String)contents.getTransferData(flavor);   
                        textarea.append(str);   
                   }   
                catch(Exception ee)
                {
                }   
         }
         else if(mi == item8)
         {
          fontDialog.setVisible(true);
         }
         else if(mi == item1)
         {
          textarea.setText(null);
         }
         if(mi == okButton)
         {
          Font selectedFont = font[fontList.getSelectedIndex()].deriveFont((float)(size[sizeList.getSelectedIndex()]));
          textarea.setFont(selectedFont);
          fontDialog.dispose();
         }
         else if(mi == cancelButton)
         {
          fontDialog.dispose();
         }
         if(mi == item10)
         {
          chooser.setVisible(true);
         }
    }
    static class ColorChooser extends JDialog
    {
     JColorChooser colorChooser;
     Container c = getContentPane();
     public ColorChooser()
     {
      super(frame, "ColorDialog", false);
       setSize(450, 450);
       addWindowListener(new WindowAdapter() 
       {
       public void windowClosing(WindowEvent e) 
       {
         setVisible(false);
       }
    });
    Container c = getContentPane();
         colorChooser = new JColorChooser(Color.black);
         c.add(colorChooser, BorderLayout.NORTH);
         JButton okButton = new JButton("Ok");
         okButton.addActionListener(new ActionListener() 
         {
         public void actionPerformed(ActionEvent ae) 
         {
         closeAndSave();
         }
        });
         JButton cancelButton = new JButton("Cancel");
         cancelButton.addActionListener(new ActionListener() 
         {
         public void actionPerformed(ActionEvent ae) 
         {
         setVisible(false);
           }
         });
         JPanel controlPanel = new JPanel();
         controlPanel.add(okButton);
         controlPanel.add(cancelButton);
         c.add(controlPanel, BorderLayout.SOUTH);
      }
      public void closeAndSave() 
      {
       Color fontColor = colorChooser.getColor();
       textarea.setForeground(fontColor);
         setVisible(false);
           }
    }
    }
      

  3.   

    tanlingyun() 很感谢你的程序,我刚看了部分代码和运行程序,都很不错不过我很多没有学到会有点乱看着,其实我不需要这样太多,还有好象输出不是fileoutputstream的,其实我只是想弄懂fileoutputstream和fileinputstream和他们的方法
    来解决文件的输出和输入,很简单可以你的程序很棒 我留着以后自己试着模仿下你程序自己也写过看看呵呵
      

  4.   

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;public class test { /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
    String string = "我是ghyghost";// 此为textarea中的字符串内容 FileOutputStream out = new FileOutputStream("test.txt");
    out.write(string.getBytes());
    out.flush();
    out.close(); } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }}
    示例程序
      

  5.   

    如何用fileinputstream把文件内容写入呢,如何判断已经读到文件末尾,c中有eof
    java是否有这样的?也给我例子哦
      

  6.   

    我看的懂上面朋友的那个记事本程序,可会有很多问题,因为一个程序,主要是fileoutputsteam和fileintputsteam里面的函数,常用的函数用的比较多的大家解说说哦
    API文挡有我不怎么很看的懂
      

  7.   

    FileInputStream input = new FileInputStream("test.txt");
    int a;
    while ((a = input.read()) != -1) {
    System.out.print((char) a);
    } while ((a = input.read()) != -1)这句用来判断是不是到文件尾了