Does .NET (Mono) support cross-platform file operations and cross-platform audio metadata handling (through libraries)?

For my next project, the two leading frontrunners are .NET and Java. The project is to take a directory (something like My Music in Windows) that contains directories and music files (MP3s initially, but eventually expanded to other music formats). For each file, it would allow you to play the file and view/edit its metadata, filename, and location.

I know that Java has libraries for both getting/editing metadata and cross-platform support for file operations. I also know that .NET has libraries for dealing with the metadata, but I'm not sure about the file operations I need. However, I really want to get back into .NET, especially since I want to keep it on my resume, but I haven't used it since .NET 2.0 (and it's, what, 3.5 now?) and if I don't keep up with it, there's no point in putting it on my resume since I couldn't answer any questions about new versions of the technology.

Initially, Windows is my only concern, but I would like to release this as a cross-platform application.

Note: I do know that I'm reinventing the wheel, but this is a problem that I've encountered and I think it would be kind of fun to solve. It deals with a number of problems, from UI concerns to file structure management to external libraries and more.

Asked by: Daryl517 | Posted: 23-01-2022

Answer 1

The official page from mono on the first part of this topic is IOMap.

Mono now has a portability layer into Mono that will address those problems without requiring changes to your code. This will remove a large component of the porting cycle as a whole class of obnoxious problems are gone.

The new portability framework is enabled by setting the environment variable MONO_IOMAP (which we will likely rename to something shorter) to one of the following values:

  • case: makes all file system access case insensitive.
  • drive: strips drive name from pathnames.
  • all: enables both case and drive.

In addition, if any of those options are enabled, the directory separator mapping is also turned on.

This functionality is included since 1.1.18.

Answered by: Fenton110 | Posted: 24-02-2022

Similar questions

linux - Cross-platform way to open a file using Java 1.5

I'm using Java 1.5 and I'd like to launch the associated application to open the file. I know that Java 1.6 introduced the Desktop API, but I need a solution for Java 1.5. So far I found a way to do it in Windows: Runtime.getRuntime().exec(new String[]{ "rundll32", ...

user interface - Is Java the best language to develop cross-platform GUI applications?

Closed. This question is opinion-based. It is not c...

java - Qt Jambi vs SWT for cross-platform GUI development

I'm currently involved in a project developing applications primarily for Linux (Fedora 10). However, it might be the case later on that we will have to port these applications to Mac OS X and Windows and we don't want to be caught out by choosing the wrong GUI toolkit.* For a variety of legacy reasons we are locked into using Java. We are in the process of deciding between using Qt Jambi and SWT for the GUI. I hav...

java - Cross-platform source control?

We're doing development for both .NET (Using VS 2008) and Java (using eclipse) Currently, we're using CVS, but there isn't really a good plugin for Visual Studio 2008, so I'm looking at changing to something that has better support for VS 2008 and Eclipse. My initial thought was SVN, as it is really close to CVS, but I'm a bit tempted to use something like Mercurial. I'm looking for something that is simpl...

Is there a cross-platform Java method to remove filename special chars?

I'm making a cross-platform application that renames files based on data retrieved online. I'd like to sanitize the Strings I took from a web API for the current platform. I know that different platforms have different file-name requirements, so I was wondering if there's a cross-platform way to do this? Edit: On Windows platforms you cannot have a question mark '?' in a file name, whereas ...

ffmpeg - Java: cross-platform .flv playback

I'm looking for a way to playback .flv files using java. This means I will need a ffmpeg lib that is cross-platform. I've been toying with jmf and fobs4jmf, but I cannot playback in linux because I need a native library (maybe Is there any java lib that allows me to playback .flv besides fobs4jmf? Or fobs4jmf can be used in linux, mac, etc? A pure-java lib would be perfect! Edit: The player w...

Is Ruby as cross-platform as Java?

You can compile a Java application and run it in any machine where the Java virtual machine is located, independently of the underlying hardware. Since Ruby on Rails was built upon Ruby, I'm concerned if building software in Ruby in any environment is the same or not. There exists versions of Ruby for Windows, Linux and Mac at least.

java - Cross-Platform Programming Language with a decent gui toolkit?

For the program idea I have, it requires that the software be written in one binary that is executeable by all major desktop platforms, meaning it needs an interpreted language or a language within a JVM. Either is fine with me, but the programming language has to balance power & simplicity (e.g. Python) I know of wxPython but I have read that it's support on Mac OS X is fairly limited Java sounds good ...

How to use Maven to handle a cross-platform (Windows + Linux) Java Native Interface Project?

I am currently trying to develop a cross-platform solution that will make some UI components that are not already part of the java standard library available to my java code. I am writing xlib code for X11 and using the relevant win32 api's for windows. Is it possible (or even recommended?) to setup a java and c code build system using Maven? I need a build system that will compile and link the X11 code and compile...

Cross-platform way to change java process priority

I need to invoke .jar file in separate JVM from another java application, and it very CPU-consuming, so it should run with background priority in order not to affect the rest of the system. Is there any cross-platform method to do this?

Still can't find your answer? Check out these amazing Java communities for help...

Java Reddit Community | Java Help Reddit Community | Java Community | Java Discord | Java Programmers (Facebook) | Java developers (Facebook)