//这是一个具有打开文件功能的完整且正确程序,哪位高手帮我完成一下save功能,就是把text 里面的文字能保存到本地硬盘里。
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
//import javax.swing.event.*;
public class Mypj3 extends JApplet{
Container cp;
ActionListener a1;
JButton btn;
FileDialog d;
JFrame f;
JMenuBar mb;
JMenu m1;
JMenu m2;
JMenu m3;
JMenuItem mi0;
JMenuItem mi1;
JMenuItem mi2;
JMenuItem mi3;
String fname;
JTextArea jt;
public void init()
{ f=new JFrame();
cp=getContentPane();
cp.setLayout(new BorderLayout());
jt=new JTextArea("请在这里输入文本");
JScrollPane js=new JScrollPane(jt);
mb = new JMenuBar();
m1 = new JMenu("File");
m2 = new JMenu("Edit");
m3 = new JMenu("Help");
mi0 = new JMenuItem("Open");
mi1 = new JMenuItem("Save");
mi2= new JMenuItem("Quit");
m1.add(mi0);
m1.add(mi1);
m1.add(mi2);
m1.addSeparator();
m1.add(mi3);
mb.add(m1);
mb.add(m2);
mb.add(m3);
add(js);
setJMenuBar(mb);
}
public void start(){
mi0.addActionListener(
a1=new ActionListener(){
public void actionPerformed(ActionEvent e){
if (e.getSource() == mi0) {
d= new FileDialog(f,"请打开txt文件");
d.setVisible(true);
fname = d.getDirectory()+d.getFile();
try{
FileInputStream myfile =new FileInputStream(fname);
byte [] buf= new byte[10*1024];
int len=myfile.read(buf);
String text=new String(buf,0,len);
jt.setText(text);
myfile.close();
}
catch(Exception ex){
jt.setText("文件打开出错");
}
}//end if
}//end actionperforemed
}
);//end innner class
}//end init
}
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
//import javax.swing.event.*;
public class Mypj3 extends JApplet{
Container cp;
ActionListener a1;
JButton btn;
FileDialog d;
JFrame f;
JMenuBar mb;
JMenu m1;
JMenu m2;
JMenu m3;
JMenuItem mi0;
JMenuItem mi1;
JMenuItem mi2;
JMenuItem mi3;
String fname;
JTextArea jt;
public void init()
{ f=new JFrame();
cp=getContentPane();
cp.setLayout(new BorderLayout());
jt=new JTextArea("请在这里输入文本");
JScrollPane js=new JScrollPane(jt);
mb = new JMenuBar();
m1 = new JMenu("File");
m2 = new JMenu("Edit");
m3 = new JMenu("Help");
mi0 = new JMenuItem("Open");
mi1 = new JMenuItem("Save");
mi2= new JMenuItem("Quit");
m1.add(mi0);
m1.add(mi1);
m1.add(mi2);
m1.addSeparator();
m1.add(mi3);
mb.add(m1);
mb.add(m2);
mb.add(m3);
add(js);
setJMenuBar(mb);
}
public void start(){
mi0.addActionListener(
a1=new ActionListener(){
public void actionPerformed(ActionEvent e){
if (e.getSource() == mi0) {
d= new FileDialog(f,"请打开txt文件");
d.setVisible(true);
fname = d.getDirectory()+d.getFile();
try{
FileInputStream myfile =new FileInputStream(fname);
byte [] buf= new byte[10*1024];
int len=myfile.read(buf);
String text=new String(buf,0,len);
jt.setText(text);
myfile.close();
}
catch(Exception ex){
jt.setText("文件打开出错");
}
}//end if
}//end actionperforemed
}
);//end innner class
}//end init
}
我用在frame里面的方法写save完全没有问题,可是一到applet 中就出现
access denied (java.io.FilePermission 我的文件.txt write)
我知道这是因为applet限制了i/0操作,我的问题是:
1:既然如此,为什么我还可以打开一个文件,并把他的内容显示在我的text里面呢?
2:有什么办法,比如通过修改这个filepermission使得我的applet也可以把text的文件保存到某个文件中。
3,在上面程序上请完成此功能。
回答前两个问题者每个给30分,后面一个问题40分
主要是防止某些别有用心的人在applet里写恶意代码