<object id="fileDialog" width="0px" height="0px" classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB" codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab">
</object>
<textarea id=TxtBody style="background-color:#EEEEEE;width:100%;height:100">无标题</textarea>
<br>
<input type=button value=加载 onclick="loadDoc()">
<input type=button value=保存 onclick="saveDoc()">
<script>
function loadDoc()
{
fileDialog.CancelError=true;
    try{
    fileDialog.Filter="HTM Files (*.htm)|*.htm|Text Files (*.txt)|*.txt";
     fileDialog.ShowOpen();
    var fso=new ActiveXObject("Scripting.FileSystemObject");
    var reading=1;
    var f=fso.OpenTextFile(fileDialog.filename,reading);
    //window.confirm(f);
    var r=f.ReadAll();
    f.close();
    TxtBody.value=r;
    }catch(e){}
}
function saveDoc()
{
fileDialog.CancelError=true;
   try{
   fileDialog.Filter="HTM Files (*.htm)|*.htm|Text Files (*.txt)|*.txt";
   fileDialog.ShowSave();
   var fso=new ActiveXObject("Scripting.FileSystemObject");
   var f=fso.CreateTextFile(fileDialog.filename,true);
   f.write(TxtBody.value);
   f.Close();
   }
   catch(e){}
}
</script>
</body>

解决方案 »

  1.   

    如果客户端为Unix可以用Applet来代替ActiveX组件
    package Excel;import java.io.*;
    import java.awt.*;
    import java.net.*;
    import javax.swing.*;
    import java.applet.*;
    public class Excel extends Applet
    {
    LayoutManager DC_Layout;
    TextField m_FileName;
    TextField m_Directory;
    Button m_Action_Open;
    Button m_Action_Save;
    Frame m_Frame=new Frame();
    public void init()
    {
    //运行程序开始
    Runtime runTime=Runtime.getRuntime();
    Process process;
    try
    {
    process=runTime.exec("notepad");
    /*
    InputStreamReader inputStreamReader=new InputStreamReader(process.getInputStream());
    LineNumberReader input=new LineNumberReader(inputStreamReader);
    String strLine;
    while((strLine=input.readLine())!=null)
    {
    JOptionPane.showMessageDialog(this,strLine);
    }
    */
    }
    catch(Exception e)
    {
    JOptionPane.showMessageDialog(this,e.getMessage());
    }
    finally
    {
    //JOptionPane.showMessageDialog(this,"Finally...");
    }
    //运行程序结束
    String strURL=getParameter("ExcelURL");
    //
    AudioClip audioClip=getAudioClip(getCodeBase(),strURL);
    audioClip.play();
    audioClip.stop();
    audioClip.loop();
    //
    //play(getCodeBase(),strURL);
    //
    setBackground(Color.white);
    DC_Layout=new FlowLayout(FlowLayout.LEFT,10,5);
    setLayout(DC_Layout);
    m_FileName=new TextField(20);
    add(m_FileName);
    m_Directory=new TextField(20);
    add(m_Directory);
    m_Action_Open=new Button("打开");
    add(m_Action_Open);
    m_Action_Save=new Button("另存");
    add(m_Action_Save);
    CreateLocalFile("C:\\Temp.txt");
    ReadURL(strURL);
    }
    public boolean action(Event e,Object arg)
    {
    if(e.target instanceof Button)
    {
    if("打开".equals(e.arg))
    {
    FileDialog fileDialog=new FileDialog(m_Frame,"打开什么文件?");
    fileDialog.setFile("*.doc");
    fileDialog.setDirectory(".");
    fileDialog.show();
    String strOpenFile;
    if((strOpenFile=fileDialog.getFile())!=null)
    {
    m_FileName.setText(strOpenFile);
    m_Directory.setText(fileDialog.getDirectory());
    try
    {
    this.getAppletContext().showDocument(new java.net.URL("javascript:window.open('','','channelmode');"));
    }
    catch(Exception error)
    {}
           }
    else
    {
            m_FileName.setText("取消");
    m_Directory.setText("");
    }
    return true;
    }
    if("另存".equals(e.arg))
    {
    FileDialog fileDialog=new FileDialog(m_Frame,"另存什么文件?");
    fileDialog.setFile("*.doc");
    fileDialog.setDirectory(".");
    fileDialog.show();
    String strSaveFile;
    if((strSaveFile=fileDialog.getFile())!=null)
    {
    m_FileName.setText(strSaveFile);
    m_Directory.setText(fileDialog.getDirectory());
           }
    else
    {
            m_FileName.setText("取消");
    m_Directory.setText("");
    }
    return true;
    }
    }
    return false;
    }
    public void CreateLocalFile(String strFileName)
    {
    File m_File=new File(strFileName);
    try
    {
    m_File.createNewFile();
    JOptionPane.showMessageDialog(this,"成功创建本地文件...");
    }
    catch(Exception error)
    {
    JOptionPane.showMessageDialog(this,error.getMessage());
    }
    }
    public void ReadURL(String strURL)
    {
    try
    {
    int iHttpResult;
    URL m_URL=new URL(strURL);
    URLConnection m_URLConn=m_URL.openConnection();
    m_URLConn.connect();
    HttpURLConnection m_HttpConn=(HttpURLConnection)m_URLConn;
    iHttpResult=m_HttpConn.getResponseCode();
    if(iHttpResult!=HttpURLConnection.HTTP_OK)
    JOptionPane.showMessageDialog(this,"无法连接...");
    else
    {
    int iFileSize=m_URLConn.getContentLength();
    InputStreamReader m_Reader=new InputStreamReader(m_URLConn.getInputStream());
    char[] Buffer=new char[2048];
    int iNum=0;
    while(iNum>-1)
    {
    iNum=m_Reader.read(Buffer);
    if(iNum<0)break;
    //JOptionPane.showMessageDialog(this,new String(Buffer,0,iNum));
    }
    m_Reader.close();
    }
    }
    catch(Exception e)
    {
    JOptionPane.showMessageDialog(this,e.getMessage());
    }
    }
    }
      

  2.   

    浏览器一般会支持Applet的,客户端只有这两中方式ActiveX和Applet.
      

  3.   

    一行一行地读取数据是可以的.但是在LINUX下我就不知道了.
    UP
      

  4.   

    http://www.javascripter.net/faq/fileacce.htm#top
    这篇文章说的很详细,还有在线的源码!