我试图将数据从应用程序保存到内部存储并将其加载回来,但我觉得我错过了一些内容并且在加载中找不到该文件。
保存代码:
<telerik:RadGridView Name="ProcedureGrid"
DockPanel.Dock="Left"
SelectionMode="Single"
SelectionUnit="FullRow"
ItemsSource="{Binding Procedures}"
IsReadOnly="True"
AutoGenerateColumns="False"
ShowGroupPanel="False"
ShowColumnHeaders="False"
CanUserReorderColumns ="False"
RowIndicatorVisibility="Collapsed"
Visibility="Collapsed"
Width="200"
FontSize="18"
SelectionChanged="ProcedureGrid_SelectionChanged"
>
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Name"
AllowDrop="False"
DataMemberBinding="{Binding Converter={StaticResource langConverter}}"
IsGroupable="False"
IsFilterable="False"
MaxWidth="155"/>
<telerik:GridViewColumn>
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<nav:SmallForwardNavigateIcon MaxWidth="30" DockPanel.Dock="Right" Margin="1"
Cursor="Hand" VerticalAlignment="Center" HorizontalAlignment="Center"
MouseDown="SmallForwardNavigateIcon_MouseDown"
Visibility="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.previousProc,
Converter={StaticResource IsPrevProc}}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
加载代码:
private void saveScanData(List<MyStack> surf) throws IOException {
Log.i(TAG, "Saving");
String filename = String.format("Scan%05d.data", scanNumber);
scanNumber += 1;
ObjectOutput out;
File outFile = new File(Environment.getExternalStorageDirectory(), filename);
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(surf);
out.close();
}
感谢您的帮助。
答案 0 :(得分:2)
您使用名称
写入文件String.format("Scan%05d.data", scanNumber)
但是你读了名为
的文件"Scan%05d.data"
更改对象输入流创建或使用其他方法创建文件名。
new ObjectInputStream(new FileInputStream(String.format("Scan%05d.data", scanNumber));
答案 1 :(得分:1)
使用open openFileOutput和openfileInput方法,而不是打开新的输入和输出流。
http://developer.android.com/intl/es/guide/topics/data/data-storage.html#filesInternal
此外,您正在尝试将文件保存在ExternalStorage文件夹中。
Environment.getExternalStorageDirectory()
。在该文件夹中写入需要AndroidManifest上的Android权限
答案 2 :(得分:0)
您正在写入外部存储空间:
new File(Environment.getExternalStorageDirectory(), filename);
你无处可读:
new ObjectInputStream(new FileInputStream("Scan%05d.data"));
如果您想使用外部存储空间,请在两个地方使用外部存储 ,而不只是一个。