Hallo,
ich möchte mit der Klasse FileCreate plattformunabhängig einen Programmordner und in diesem eine Settings-Datei anlegen. Und sowohl Ordner als auch Datei sollen versteckt werden.
Dieses Programm funktioniert auch unter Linux und unter Windows wird nur das Verzeichnis angelegt. Probleme macht unter Windows
Die Default settings.cfg wird im resources-Ordner im Jar-File mitgeliefert.
Windows findet die Datei nicht. Ich habe das bereits im Code ausprobiert und einen quotierten Backlash für Windows eingefügt.
Seht ihr etwas, was ich nicht sehe? Wie wird der Pfad "resources/settings.cfg" in Windows aufgerufen, wenn er im Jar-File liegt?
Grüße
Wambui
ich möchte mit der Klasse FileCreate plattformunabhängig einen Programmordner und in diesem eine Settings-Datei anlegen. Und sowohl Ordner als auch Datei sollen versteckt werden.
Code:
package com.example.calculator;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributeView;
import java.nio.file.attribute.DosFileAttributes;
import java.nio.file.attribute.FileTime;
import static com.example.calculator.Constants.DIRECTORY;
public class FileCreate {
private static String directory;
private static String settings;
private static Path source;
/**
* @param args
*/
public static void main(String[] args) {
if (System.getProperty("os.name").indexOf("Windows") != -1) {
directory = DIRECTORY;
settings = "settings.cfg";
} else {
directory = "."+DIRECTORY;
settings = ".settings.cfg";
}
String dir = System.getProperties().getProperty("user.home")+File.separator+directory;
String file = System.getProperties().getProperty("user.home")+File.separator+directory+File.separator+settings;
Path dirPath = Paths.get(dir);
Path filePath = Paths.get(file);
if (!(new File(System.getProperties().getProperty("user.home")+File.separator+directory).exists())) {
try {
dirPath = Files.createDirectory(dirPath);
if (System.getProperty("os.name").indexOf("Windows") != -1) {
Files.setAttribute(dirPath, "dos:hidden", true);
}
} catch (IOException e) {
e.printStackTrace();
}
if (System.getProperty("os.name").indexOf("Windows") != -1) {
source = Paths.get("resources\\settings.cfg");
} else {
source = Paths.get("resources/settings.cfg");
}
Path target = Paths.get(file);
try {
Files.copy(source, target);
} catch (IOException e) {
e.printStackTrace();
}
if (System.getProperty("os.name").indexOf("Windows") != -1) {
try {
Files.setAttribute(filePath, "dos:hidden", true);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Dieses Programm funktioniert auch unter Linux und unter Windows wird nur das Verzeichnis angelegt. Probleme macht unter Windows
Code:
source = Paths.get("resources\\settings.cfg");
C:\Users\wambui>java -jar DateiErzeugen.jar
java.nio.file.NoSuchFileException: resources\settings.cfg
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.copy(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at com.example.calculator.FileCreate.main(FileCreate.java:58)
Windows findet die Datei nicht. Ich habe das bereits im Code ausprobiert und einen quotierten Backlash für Windows eingefügt.
Seht ihr etwas, was ich nicht sehe? Wie wird der Pfad "resources/settings.cfg" in Windows aufgerufen, wenn er im Jar-File liegt?
Grüße
Wambui
Zuletzt bearbeitet: