Java.IO.File到C#中的System.IO.Stream?

时间:2013-01-28 12:38:26

标签: android mono xamarin.android

我正在尝试将用Java(Android)编写的代码的一部分移动到C#(用于Android的Mono),我仍然坚持找到一种方法来做到这一点。 Java中代码的一部分如下:

private Bitmap decodeFile(File f){
     try {
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f), null, o);
     ...
     } catch(FileNotFoundException ex){
     }

准确地说,根据DecodeStream的第一个参数的要求,从Java.IO.File转换为System.IO.Stream是我的问题。该陈述应该如何改写?

1 个答案:

答案 0 :(得分:2)

我通常使用静态System.File方法来获取相应的FileStream:

var stream = File.OpenRead("PathToFile")

在你的情况下,你应该摆脱你在java中的“File”类:File是.NET中的静态类。你能直接将路径(作为String)传递给decodeFile函数吗?

 private Bitmap decodeFile(string f){
 try {
    var o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    using (var stream = File.OpenRead(f)) {
      BitmapFactory.decodeStream(stream, null, o);
    ...
    }
 } catch(FileNotFoundException ex){
 }