Weird behavior of File.pathseperator java
java
Solution
No, `File.pathSeparator` is `;` on Windows. For example, you might have:
PATH=c:\Utils;c:\SomethingElse
`File.pathSeparator` is `;` on Windows and `:` on Unix.
You're thinking of `File.separator` which would be `\` on Windows and `/` on Unix.
Here's a simple way of seeing that:
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("File.separator is " + File.separator);
System.out.println("File.pathSeparator is " + File.pathSeparator);
}
}
(In your first sentence you even talk about `File.separator` - but then you use `File.pathSeparator` in the code.)
Note that if you use the methods within the `File` class, you typically don't need to specify the separator at all - it's hard to tell exactly what you're trying to achieve, but I suspect something like:
File file = new File(f.getName());
File outputFile = new File(output, file.getName());
// Now use outputFile
... would work better and be cleaner.
Problem
I am developing a program in Java that associates with a file, so I use`File.separator` in order to manage it. The weird fact is that everywhere I call it, it returns the `\` as it should since I am working on Windows except in the last function I use it. There, it returns the `;`. I'll give you a piece of my code although I believe it won't help much. Is there anything else I should know to fix the problem? ``` System.out.println("File:" +source+"\n"); String filename= f.getName().substring(f.getName().lastIndexOf(File.pathSeparator)+1,f.getName().length());//here at printing I get / System.out.println("Filename:" +filename+"\n"); InputStream is = null; OutputStream os = null; try { is = new FileInputStream(source); os = new FileOutputStream(output+ File.pathSeparator + filename);//here I get ; byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } } finally { is.close(); os.close(); } ```