Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在更改数组中的变量后,如何获取对象数组并更新对象数据文件?_Java_Arrays_Eclipse_Object_Objectoutputstream - Fatal编程技术网

Java 在更改数组中的变量后,如何获取对象数组并更新对象数据文件?

Java 在更改数组中的变量后,如何获取对象数组并更新对象数据文件?,java,arrays,eclipse,object,objectoutputstream,Java,Arrays,Eclipse,Object,Objectoutputstream,我有一个对象数组,我正在尝试更改对象的值,然后重新更新存储文件中对象的存储文件。当我尝试更改存储文件时,它要么清除文件,要么什么也不做。这是我的密码 public class InventoryManager implements Serializable{ String name; String code; double price; int inventory; String expireDate; boolean frozen; String type; int shoeSize; do

我有一个对象数组,我正在尝试更改对象的值,然后重新更新存储文件中对象的存储文件。当我尝试更改存储文件时,它要么清除文件,要么什么也不做。这是我的密码

public class InventoryManager implements Serializable{

String name;
String code;
double price;
int inventory;
String expireDate;
boolean frozen;
String type;
int shoeSize;
double screenSize;
boolean medical;
Object myObject;


Controller l;

FileOutputStream storage = new FileOutputStream("Storage.dat");
ObjectOutputStream out = new ObjectOutputStream(storage);

Pharmacy ph;
TVS tv;
Shoes shoe;
Fruit fruit;

Scanner input = new Scanner(new File("inp.dat"));


public InventoryManager(Object x) throws IOException{

    myObject = x;


    if(x instanceof Item){
        name = ((Item) x).getName();
        code = ((Item) x).getCode();
        price = ((Item) x).getPrice();
        inventory = ((Item) x).getInventory();

        }

    out.writeObject(x);
    out.close();
}

public class Controller implements ActionListener {

GUI myGui;
InventoryManager[] myManager;
JButton myButton;
int quantity;
String nameofproduct = "";

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub



    if(arg0.getSource() instanceof JButton){


        myButton = (JButton) arg0.getSource();
        String x = myButton.getText();

        for(int i = 0; i<myManager.length; i++){
            if(x.equals(myManager[i].name)){
                nameofproduct = myManager[i].name;
            }
        }

        if(x.equals("Purchase")){
            try{
                quantity = Integer.parseInt(myGui.qtnInput.getText());
            if(nameofproduct == ""){
                JOptionPane.showMessageDialog(null, "Select a Product");
            }
            else{

                for(int i = 0; i<myManager.length; i++){
                    if(nameofproduct.equals(myManager[i].name)){

                        myManager[i].inventory = myManager[i].inventory - quantity;
                        myGui.qtnLeft.setText("Quantity: "+myManager[i].inventory);
                        myGui.CartInv.setText(myGui.CartInv.getText() + myManager[i].name + " " + quantity+"\n");
                        myGui.description.setText(myManager[i].toString());

                        }
                    }



                }



            }
            catch(NumberFormatException e){
                JOptionPane.showMessageDialog(null, "That is not a number");
                myGui.qtnInput.setText("");
            }
        }

        for(int i = 0; i<myManager.length; i++){
            if(x.equals(myManager[i].name)){
                myGui.qtnLeft.setText("Quantity: "+myManager[i].inventory);
                myGui.description.setText(myManager[i].toString());
            }
        }


    }


}


}

public void getIM(InventoryManager[] myManager){
    this.myManager = myManager;
}
公共类InventoryManager实现可序列化{
字符串名;
字符串代码;
双倍价格;
国际库存;
字符串过期;
布尔冻结;
字符串类型;
内鞋垫;
双倍屏幕尺寸;
布尔医学;
对象对象对象;
控制器l;
FileOutputStream存储=新的FileOutputStream(“storage.dat”);
ObjectOutputStream out=新的ObjectOutputStream(存储);
药学博士;
电视;
鞋;
水果;
扫描仪输入=新扫描仪(新文件(“inp.dat”);
公共资源清册管理器(对象x)引发IOException{
myObject=x;
if(项目的x实例){
name=((项)x).getName();
代码=((项)x).getCode();
价格=((项目)x).getPrice();
存货=((项目)x).getInventory();
}
out.writeObject(x);
out.close();
}
公共类控制器实现ActionListener{
桂myGui;
存货经理[]我的经理;
JButton-myButton;
整数;
产品的字符串名称=”;
@凌驾
已执行的公共无效操作(操作事件arg0){
//TODO自动生成的方法存根
if(arg0.getSource()JButton实例){
myButton=(JButton)arg0.getSource();
字符串x=myButton.getText();

对于(int i=0;i将文件中的字节成像为基板上彼此靠近的LegoTM块

如果你想在中间改变一些块,你必须在改变的位置之后移动所有的块,并将它们移回字节数,改变后的内容部分比旧的部分长。

硬盘上的字节也是如此


这意味着最简单的方法是首先覆盖整个文件。

欢迎使用堆栈溢出!我想这段代码的95%与您的问题无关。请创建一个演示您的问题的示例。