Как записать файл в определенную папку в Java?

Я сделал эту программу, которая делает снимки экрана, используя класс робота и класс изображения с буферизацией. Файл.png, который содержит снимки экрана, сохраняется в папке, где находится файл.java. Я хочу, чтобы файлы изображений были записаны в другую папку с именем screenshot, которую я создал. Я попытался переименовать файлы, также попытался копировать с использованием классов inputtream и outputtream, но с тем же результатом. Как я мог преодолеть это? Я использую Windows 8 и Java 1.8.0

package screenshot;

//Packages imported for the program

import java.io.*;
import java.nio.file.*;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.util.*;
import java.text.*;

//Class logic written beside each statement

public class Screenshot 
{

   public static void main(String[] args) 
   {       

     try                                                                                    
     {                                                //Exception Handling
        SimpleDateFormat df=new SimpleDateFormat("dd-MM-yy H-m'.png'");                   //Setting the date format 
        Date date=new Date();                                                             //Getting the current date and time
        String ref=df.format(date);                                                       //Formatting the current date in the SDF constructor's format
        //String dirname="M:\\Java\\bin\\screenshot\\";
        System.out.println(ref);                                                          //Testing whether the current date is getting displayed in the desired format
        Robot robot = new Robot();                                                        //Instanciating the Robot class       
        Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());          //Declaring a rectangle with size of the screen
        BufferedImage bufferedImage = robot.createScreenCapture(captureSize);                        //Capturing the screenshot and save it in Buffered image object
        //File dir = new File(dirname);
        //File filen = new File("M:\\Java\\bin\\screenshot\\temp.png");
        File filename = new File(ref);
        ImageIO.write(bufferedImage, "png" , filename); //writing the image to a file called filename

     }
    catch(Exception e) 
    {
       System.err.println(e);  //Exception message display
    }
   }

}

3 ответа

Решение

Имя пакета совпадает с именем папки назначения. Изменяя имя пакета или имя папки, каждый из перечисленных методов работает нормально

Сохранить файл в папку screenshotизменить переменную

String ref=df.format(date);

в

String ref = "absolute_path_of_folder/" + df.format(date); // like "C:/screenshot/" + df.format(date);

это сохранит файл в эту папку.

Вы пробовали это? Примечание. Я использую конструктор с двумя аргументами для File который занимает File представляющий каталог и имя файла внутри этого каталога. Я раскомментировал ваши строки, описывающие, в какой каталог сохранять, и использовал этот каталог.

    SimpleDateFormat df=new SimpleDateFormat("dd-MM-yy H-m'.png'");                   //Setting the date format 
    Date date=new Date();                                                             //Getting the current date and time
    String ref=df.format(date);                                                       //Formatting the current date in the SDF constructor's format
    String dirname="M:\\Java\\bin\\screenshot\\";
    System.out.println(ref);                                                          //Testing whether the current date is getting displayed in the desired format
    Robot robot = new Robot();                                                        //Instanciating the Robot class       
    Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());          //Declaring a rectangle with size of the screen
    BufferedImage bufferedImage = robot.createScreenCapture(captureSize);                        //Capturing the screenshot and save it in Buffered image object
    File dir = new File(dirname);
    File filen = new File("M:\\Java\\bin\\screenshot\\temp.png");
    File filename = new File(filen, ref);
    ImageIO.write(bufferedImage, "png" , filename); //writing the image to a file called filename
Другие вопросы по тегам