我有一个Java Web应用程序,我构建为WAR并在Apache Tomcat上部署。假设我有一个内置我的应用程序的机制来确定它何时成功部署并在服务器上运行(我称之为SuccessHandler)。有条件地在SuccessHandler中我需要以编程方式从项目的部署目录中删除文件(比如说<DataGrid Name="gridDetails" AutoGenerateColumns="False" ItemsSource="{Binding Orders}">
<DataGrid.Columns>
<DataGridTextColumn Header="Item Name" Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TreeView>
<TreeViewItem ItemsSource="{Binding ItemAdditionals}">
<TreeViewItem.Header>
<TextBlock Text="{Binding itemName}" TextWrapping="Wrap" TextAlignment="Center"/>
</TreeViewItem.Header>
<TreeViewItem.ItemTemplate>
<DataTemplate>
<TextBlock Margin="10 0 0 0" Text="{Binding}"/>
</DataTemplate>
</TreeViewItem.ItemTemplate>
</TreeViewItem>
</TreeView>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTextColumn>
<DataGridTextColumn Header="Quantity" Binding="{Binding quantity}" />
<DataGridTextColumn Header="Price" Binding="{Binding itemPrice}" />
</DataGrid.Columns>
</DataGrid>
)我该怎么做?
Disclamer:我可以在部署后加载/删除位于path-to-tomcat/webapps/my-project/file.txt
的资源目录中的文件+我能够使用硬编码的绝对路径删除文件但这不是我想要的对于。无论应用程序部署在何处,我都希望能够删除文件。
答案 0 :(得分:4)
你无法可靠地做到这一点。在一般情况下,应用程序的内部不可写。特别是,档案可以在适当的位置执行而不会爆炸;即使不是这样,也没有什么能阻止服务器在每次启动时恢复文件。你需要另一种方法来保存你的州。
答案 1 :(得分:0)
您似乎只需删除该文件即可在其中写一个新文件。
也许覆盖文件是一种更好的方法?
我假设您将部署应用程序的目录存储为文件,您可以在此处调用directory.getAbsolutePath()并将&#34;路径附加到文件&#34;走那条路。
答案 2 :(得分:0)
您可以存储和删除webapp文件夹之外的文件,例如path-to-tomcat/lib/....