将文件读入JavaFX中的数组,然后写回
我正在开发一个小的清单程序,并试图确定如何将数据从文件中获取到某种数组中,以便将数据绑定到某些控件。其思想是用户可以浏览数据并进行更改,然后将更改写回文件中,覆盖当前的内容 这是一个javafx程序。我很好地读入了数据,但到目前为止,我所做的一切都无法使数据在while循环之外被访问。任何指向正确方向的指针都会有帮助。到目前为止,我对ArrayList或一系列对象都不感兴趣,因为在我阅读了所有信息之后,似乎没有任何地方可以放在我可以访问的地方将文件读入JavaFX中的数组,然后写回,java,arrays,javafx,file-read,Java,Arrays,Javafx,File Read,我正在开发一个小的清单程序,并试图确定如何将数据从文件中获取到某种数组中,以便将数据绑定到某些控件。其思想是用户可以浏览数据并进行更改,然后将更改写回文件中,覆盖当前的内容 这是一个javafx程序。我很好地读入了数据,但到目前为止,我所做的一切都无法使数据在while循环之外被访问。任何指向正确方向的指针都会有帮助。到目前为止,我对ArrayList或一系列对象都不感兴趣,因为在我阅读了所有信息之后,似乎没有任何地方可以放在我可以访问的地方 try ( ObjectIn
try (
ObjectInputStream read_file = new ObjectInputStream(new FileInputStream("stock.dat")) ;
) {
while (true) {
String invItemName = read_file.readUTF() ;
double itemCost = read_file.readDouble() ;
double itemPrice = read_file.readDouble() ;
double itemStartInv = read_file.readDouble() ;
double itemUnitsSold = read_file.readDouble() ;
double itemProjectedSales = read_file.readDouble() ;
double profit = ((itemPrice - itemCost) * itemUnitsSold) ;
//double dblActualvsProjectedSalesPercentage = getSalesPercentage(itemUnitsSold, itemProjectedSales) ;
double dblDefaultOrder = itemProjectedSales + (itemProjectedSales * .1) ;
double dblBigOrder = dblDefaultOrder + (dblDefaultOrder * .1) ;
InventoryItem o = new InventoryItem(invItemName, itemCost, itemPrice, itemStartInv, itemUnitsSold, itemProjectedSales);
//For each line in the file, format & display in the primary inventory window
taCurrentInventory.appendText(String.format( "Item: \t\t\t%8s\nUnit Cost: \t\t\t$%.2f\nUnit Price: \t\t\t$%.2f\nBeginning Inventory: \t%.0f\nUnits Sold: \t\t\t%.0f\nEstimated Sales: \t\t%2.0f\n------------------------------------\n", invItemName, itemCost, itemPrice,
itemStartInv, itemUnitsSold, itemProjectedSales ));
//Fill in taSalesAndProfit with sales firgures
taSalesAndProfit.appendText(String.format( "Item: \t%s\nSales: \t%.0f\nProfit: \t$%.2f\n-----------------------------\n", invItemName, itemUnitsSold, profit ) ) ;
//Format and display our profit data
if (o.getActualvsProjectedSalesPercent(itemUnitsSold, itemProjectedSales) >= 20 || o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) >= -19) { //Just dispay if actual sales vs projected sales percentage is down less than 20%
taMarketing.appendText(String.format( "%s \t %4.0f%%\n", invItemName, o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) ) ) ;
}
else { //Flag item for a sales promotion to get rid of excess inventory because actual sales vs projected sales are down 20% or more
taMarketing.appendText(String.format( "%s \t %4.0f%% - Sale!!\n", invItemName, o.getActualvsProjectedSalesPercent(itemUnitsSold, o.getEstSales()) ) ) ;
}
//Format and display our ordering needs
if (o.getActualvsProjectedSalesPercent(itemUnitsSold, itemProjectedSales) >= 20) { //If sales are 20% or more than projected order 10% more than usual
taOrdering.appendText(String.format("Item: \t\t%s\nOrder Qty: \t%.0f\n---------------------------\n", invItemName, dblBigOrder)) ;
}
else { //Otherwise, just order the usual +10% of projected sales
taOrdering.appendText(String.format("Item: \t\t%s\nOrder Qty: \t%.0f\n---------------------------\n", invItemName, dblDefaultOrder)) ;
}
}
}
catch (EOFException ex) {
}
catch (IOException ex) {
ex.printStackTrace() ;
}
你有什么错误吗?还是例外?如果是,请显示堆栈跟踪,没有错误,我只是想弄清楚如何/在哪里放置数据,这样我就可以访问所有的产品信息,这样它就可以更新并保存回文件中。哇,真难看。我想这是一个通过对象序列化创建的文件。最好的做法是每个文件只有一个对象,因此您应该创建一个类来聚合所有数据并序列化其实例,或者应该序列化集合类的实例。如果你这样做,你可以把对象读回并放到引用中,然后从中访问你需要的任何东西。而且,我猜ta*是文本区域吗?这意味着您的数据访问代码与视图UI代码交织在一起。你应该把它们分成不同的类:有一个获取数据并返回对它的引用的数据访问类,你的视图类应该显示检索到的数据。你不会碰巧有一个数据访问类的例子吧?