小编ats*_*joo的帖子

当文件存在时,File.exists()返回false

我遇到了一个我似乎无法找到任何逻辑的错误.我有这个File对象,它是这样创建的:

File file = new File("utilities/data/someTextFile.txt");
Run Code Online (Sandbox Code Playgroud)

然后我做了file.exists(),它返回false(!?).如果找不到该文件,我正在登录f.getAbsolutePath()文件.当我看路径时,似乎没问题.我可以将完整路径复制粘贴到Windows中的"运行"窗口,文件打开正常.

该文件始终存在,在我的应用程序运行期间不会被删除或更改.它位于本地机器上.

这似乎只在某些情况下发生.我可以随时重现故障,但我确信文件对象的路径不会因我为重现故障而采取的操作而改变.

什么可以导致file.exists()返回虚假?这是否与权限或文件锁等有关?

java file-io

84
推荐指数
5
解决办法
8万
查看次数

在ItemsControl DataTemplate中设置Canvas属性

我正在尝试数据绑定到这个ItemsControl:

<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

通过使用它DataTemplate,我试图单独定位我的Node元素Canvas正确:

<DataTemplate DataType="{x:Type Model:EndNode}">
    <Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

但是,它没有按预期工作.我的所有节点元素都在相同位置绘制在彼此之上.有关如何实现这一目标的任何建议?

c# wpf canvas itemscontrol

71
推荐指数
1
解决办法
2万
查看次数

如何在matlab-plot中将冲浪设置为一种颜色(无渐变)?

我的数据集由三个向量(x,y和z)组成.我将这些值绘制为带有plot3(x,y,z)的3d图中的点,这很好.我也想在同一个情节中展示一架飞机.为了得到这个图的数据,我在x和y上使用线性回归得到一个新的z.

这是它的样子:

替代文字

我希望冲浪只用一种颜色(比如浅蓝色或灰色)填充,并设置不透明度,使其透明.我怎样才能做到这一点?

graphics matlab

17
推荐指数
1
解决办法
5万
查看次数

使用继承将List <T>序列化为XML

尝试将对象序列化为XML时遇到了一些问题.尝试序列化"配置文件"属性时出现问题,该属性是配置文件项列表.个人资料是我自己的类型.理想情况下,配置文件类型应该是抽象的,但事实并非如此,因为XML序列化需要无参数的ctor."个人档案"属性包含"IncomeProfile","CostProfile","InvestmentProfile"等类型的项目,这些项目当然都继承自"个人档案".

正如我所读到的那样,序列化它本身不受支持,因为XmlIncludeAttribute只允许一个继承类型.即

[XmlInclude(typeof(IncomeProfile))]
public List<Profile> Profiles { get; set; }
Run Code Online (Sandbox Code Playgroud)

解决这个问题时最好的做法是什么?我尝试过使用IXmlSerializable和反射的不同解决方案,但我似乎无法将每个配置文件反序列化为正确的类型(它们最终都使用Profile类型的ReadXml(XmlReader reader)方法,即使Visual Studio调试器说对象的类型是"IncomeProfile"或"CostProfile".这是我当前的反序列化代码,它将xml反序列化为三个Profile对象,而不是两个IncomeProfile和一个CostProfile:

while(reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "Profile")
    {
        String type = reader["Type"];
        var project = (Profile)Activator.CreateInstance(Type.GetType(type));
        project.ReadXml(reader);

        reader.Read();
        this.Profiles.Add(p2);
    }
Run Code Online (Sandbox Code Playgroud)

非常感谢任何想法或建议!

.net c# xml-serialization

4
推荐指数
1
解决办法
3940
查看次数

ObservableCollection的Json.NET序列化"不能在当前平台上使用"

当我尝试使用Json.NET将json反序列化为我的自定义类型时,我遇到了一个奇怪的问题:

public class Shot 
{
    [JsonProperty("frames")]
    public ObservableCollection<Frame> Frames
    {
        get { return Frames = _frames ?? new ObservableCollection<Frame>(); }
        set { _frames = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这产生了这个例外:

该API"System.Collections.ObjectModel.ObservableCollection 1[[AxisCtrl.Core.Model.Frame, AxisCtrl.Core.Logic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]..ctor(System.Collections.Generic.List1 [AxisCtrl.Core.Model.Frame])"不能在当前的平台上使用.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=248273.

当我尝试从Windows 8.1 Windows应用商店应用程序中将json反序列化为此类型时,但在我的单元测试环境中的"类库"类型项目中运行时,它正在工作:

提到的网址已经死了,正在重定向到主页面,因此没有多大帮助.奇怪的是,在我开始将项目和类拆分为不同的结构之前,这是有效的.但是我没有移动Shot类或更改它包含的项目类型.

Shot类在".NET Framework 4.5及更高版本","Windows应用商店应用程序(Windows 8)及更高版本"和"Windows Phone 8"的可移植类库类型项目中定义,主项目是Windows 8.1应用程序.

关于这里发生了什么的任何想法?

c# json.net microsoft-metro windows-8.1

2
推荐指数
1
解决办法
1462
查看次数