永发信息网

关于java FileOutputStream和FileInputStream的小问题

答案:1  悬赏:70  手机版
解决时间 2021-04-28 02:45

有这样一个题:

编写应用程序,界面如图8.8所示。当用户在第一个文本框内填入文件的路径后单击“打开文件”按钮,文件的内容显示在下面的文本区域内,在文本区域内对文件做出修改后,单击“存储文件”按钮,则可以将文件存入原来的文件名中。

我编写的程序是这样的:

//程序文件名为CeShiFile.java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.io.*;
public class CeShiFile extends JFrame implements ActionListener
{
 JLabel jlbName = new JLabel("文件名");
 JTextField tfName = new JTextField(20);
 JButton btnOpen = new JButton("打开文件");
 JButton btnSave = new JButton("存储文件");
 JTextArea taText = new JTextArea(5,20);
 JPanel p1 = new JPanel();
 JPanel p2 = new JPanel();
 JPanel p3 = new JPanel();
 JPanel p4 = new JPanel(new BorderLayout());
 JPanel p5 = new JPanel(new BorderLayout());
 public CeShiFile()
 {
   p1.add(jlbName);
   p2.add(tfName);
   p3.add(btnOpen);
   p3.add(btnSave);
   JScrollPane s = new JScrollPane(taText);
   p4.add(p1,BorderLayout.NORTH);
   p4.add(p2,BorderLayout.CENTER);
   p4.add(p3,BorderLayout.SOUTH);
   p5.add(p4,BorderLayout.NORTH);
   p5.add(s,BorderLayout.CENTER);
   getContentPane().add(p5,BorderLayout.CENTER);
   btnOpen.addActionListener(this);
   btnSave.addActionListener(this);
  }
  public void actionPerformed(ActionEvent a)
  {
   try
   {
     String arg = a.getActionCommand();
      String str = tfName.getText();
      byte buf[] = new byte[2056];
      byte bufIn[] = new byte[2056];
      int bytes;
     if(arg == "打开文件")
     {
      FileInputStream fileIn = new FileInputStream(str);
      bytes = fileIn.read(buf,0,2056);
      String strin = new String(buf,0,bytes);
      taText.setText(strin);
     }
     else if(arg == "存储文件")
     {
      String str1 = taText.getText();
      buf = str1.getBytes();
      FileOutputStream fileOut = new FileOutputStream(str);
      fileOut.write(buf,0,buf.length);
      fileOut.flush();
      fileOut.close();
      bytes = System.in.read(bufIn,0,2056);
      fileOut = new FileOutputStream(str,true);
      fileOut.write(bufIn,0,bytes);
     }
    }
    catch(IOException e)
    {
     System.out.println(e.getMessage());
    }
  }
  public static void main(String args[])
  {
   CeShiFile CS = new CeShiFile();
   CS.setSize(300,300);
   CS.show();
  }
}

 

经过测试程序可以执行,题中要求也能完成。但有一个小问题,就是在点击了“存储文件”后虽然能将修改过的内容进行保存,但程序会卡住不响应,只能在命令行强行关闭。请问谁能告诉我这是什么原因?

最佳答案

把这3句话去掉就可以了


bytes = System.in.read(bufIn,0,2056);
      fileOut = new FileOutputStream(str,true);
      fileOut.write(bufIn,0,bytes);

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
安庆岳西到芜湖有直达车吗
谁知道河南平顶山那个地方好玩而且价格合理?
中国平安人寿保险股份有限公司金华中心支公司
Error: Cannot Load file (Code: 5555H):\boo
dnf中无法交易的套装应该怎么办最好
Mg(OH)2和Fe(OH)3是强电解质吗,弱电解质和强
魔兽世界急速等级的问题
单选题向等体积等物质的量浓度的NaCl、MgCl2
狗的寿命一般是多长
QQ飞车购买车
为什么我的N72用不了QQ2009
QQ上面的黑名单里是不最多就能放80个人
分光光度法测定水杨酸含量的实验报告怎么写
帮我起一个英文名字,不要susan,lily什么的
龙之谷东北网通1区 剑凡之心 有科技的近来下
推荐资讯
最大动物是什么
语文高手进,一道语文阅读题,就2题哦!!!
我老婆怀孕差不多五个月了检查出有地中海贫血
宝贝天使专业儿童摄影地址有知道的么?有点事
我想买款超薄直板的智能手机,外形要好看的,
去百慕大三角旅游可以不?
电讯检疫 定义
求人帮忙开通QQ餐厅
一句话概括故宫,形容故宫的句子
DNF红丸改流星的补丁给我一个
征途怀旧游戏怎么玩?
为什么我的QQ空间已经开通,空间的标志却没点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?