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%与您的问题无关。请创建一个演示您的问题的示例。