2013-07-18 5 views
1

Я указал полный путь к файлу, когда создал FileWriter, но я не видел создаваемого файла. Во время создания файла я также не получал никаких ошибок.Использование FileWriter с полным путем

Вот отрывок из моего кода:

public void writeToFile(String fullpath, String contents) { 
    File file = new File(fullpath, "contents.txt"); 
    if (!file.exists()) { 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    try { 
     BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); 
     bw.write(contents); 
     bw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

FULLPATH является "D:/codes/sources/logs/../../bin/logs". Я искал всю свою директорию, но нигде не могу найти файл. Если я укажу только имя файла только [File file = new File ("contents.txt");], он может сохранить содержимое файла, но он не помещается в мое предпочтительное место.

Как сохранить содержимое файла в предпочтительном месте?

UPDATE: Я напечатал полный путь, используя file.getAbsolutePath(), и получаю правильный путь к каталогу. [D: \ codes \ sources \ logs .... \ bin \ logs \ contents.txt] Но когда я ищу файл в каталоге, я не могу его найти.

+2

ли вы в буквальном смысле есть "../ .." там? Если это так, вам нужно посмотреть в 'D:/codes/bin/logs' –

+0

Также с Java 7 вы можете сделать то же самое:' Files.write (Paths.get (fullPath), contents.getBytes ("UTF- 8 "));' – assylias

+3

'createNewFile()' не требуется. –

ответ

0

Убедитесь, что вы добавляете обратную косую черту к параметру пути, чтобы путь был распознан как каталог. Пример представлен для ОС Windows, которая использует обратную косую черту, которая экранирована. Для более надежного метода используйте свойство file.separator для системы.

Работы

writeToFile("D:\\Documents and Settings\\me\\Desktop\\Development\\", 
       "this is a test"); 

не работает

writeToFile("D:\\Documents and Settings\\me\\Desktop\\Development", 
       "this is a test"); 

Файл Сепаратор Пример

String fs = System.getProperty("file.separator"); 
String path = fs + "Documents and Settings" + fs + "me" + fs 
     + "Desktop" + fs + "Development" + fs; 
writeToFile(path, "this is a test"); 
+0

Я напечатал абсолютный путь через file.getAbsolutePath(), и я получаю правильную структуру каталогов. , например. D: \ Коды \ Sources \ журналы \ .. \ .. \ Bin \ Logs \ contents.txt. –

+3

Поскольку OP использует объекты 'File' для построения пути, нет необходимости получать разделитель и конкатенировать полный путь со строками. –

+3

Конструктор 'File (String parent, String child)' не заботится о концевых (back-) косах (см. [Javadocs] (http://docs.oracle.com/javase/6/docs/api/java /io/File.html#File(java.lang.String,%20java.lang.String))). – creinig