Как мне написать пакетный файл, который я уже сделал в определенный каталог в Java? - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь создать эту программу, которая будет записывать файл на компьютер пользователя, но у меня действительно проблемы, я хочу записать файл с именем desktop.bat, который у меня есть, в каталог c:/, но это не похоже как будто это работает. это код:

package javawriter;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class JavaWriterObject {

    public void TryThis(){
    try{

        File file = new File("C:\\Desktop.bat");

        if (file.exists()){
                System.out.println("The file exists \ndirectory is found");
        }else{
            System.out.println("file is not found yet ".concat("file will be created"));
            file.createNewFile();
        }

        FileWriter out = new FileWriter(file);
        BufferedWriter writer = new BufferedWriter(out);
        writer.write();

        writer.close();

        }catch(IOException e){
                e.printStackTrace();
        }
   }
}

Должен ли я написать строку для writer.write(); или я могу сделать что-то, где вместо этого я могу написать нужный файл?

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Метод Java 7 Files.copy помогает вам скопировать файл из одного места в другое .

Если вы используете более старую версию Java, выВам нужно будет либо прочитать исходный файл в себе и скопировать его содержимое в новый файл, либо вам придется использовать стороннюю библиотеку.См. Ответы на на этот вопрос , чтобы найти несколько хороших решений, включая использование Apache Commons IO FileUtils или просто стандартного Java API.

После того, как вы решили, как скопировать файлВы можете столкнуться с другой проблемой.По умолчанию Windows 7 запрещает вам писать в определенные каталоги, такие как C:\.Вы можете попробовать выполнить запись в другой каталог, например, во временный каталог или в любое место в домашнем каталоге пользователя.Если вам необходимо выполнить запись в C: \, самое простое решение (кроме создания файла в Windows заранее и перезаписи его в вашей программе, что, вероятно, противоречит цели) - отключить UAC и убедиться, что ваша учетная запись пользователя имеет разрешение на запись вэтот каталог - но это, конечно, имеет последствия для безопасности.

1 голос
/ 09 марта 2012

Вы должны получить контент, который хотите записать, из куда-нибудь , либо литерала String в вашем приложении, либо предпочтительным методом будет использование ресурса (связанного с вашим приложением) через. YourClass.class.getResourceAsStream (name) .

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

...