Ошибка в Java: исключение java.io.FileNotFoundException: C: \ Users \ FSSD \ Desktop \ My Test (доступ запрещен) - PullRequest
2 голосов
/ 17 августа 2011

У меня есть Java-код для копирования файла из одной папки в другую. Я использовал следующий код (я использовал операционную систему Windows 7),

CopyingFolder.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;


public class CopyingFolder {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File infile=new File("C:\\Users\\FSSD\\Desktop\\My Test");
        File opfile=new File("C:\\Users\\FSSD\\Desktop\\OutPut");
        try {
            copyFile(infile,opfile);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    private static void copyFile(File sourceFile, File destFile)
            throws IOException {
    if (!sourceFile.exists()) {
            return;
    }
    if (!destFile.exists()) {
            destFile.createNewFile();
    }
    FileChannel source = null;
    FileChannel destination = null;
    source = new FileInputStream(sourceFile).getChannel();
    destination = new FileOutputStream(destFile).getChannel();
    if (destination != null && source != null) {
            destination.transferFrom(source, 0, source.size());
    }
    if (source != null) {
            source.close();
    }
    if (destination != null) {
            destination.close();
    }

}

}

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

java.io.FileNotFoundException: C:\Users\FSSD\Desktop\My Test (Access is denied)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at CopyingFolder.copyFile(CopyingFolder.java:34)
    at CopyingFolder.main(CopyingFolder.java:18)

Ответы [ 2 ]

4 голосов
/ 17 августа 2011

Доступ запрещен связан с Контроль учетных записей пользователей .По сути, вы пытаетесь прочитать файл, для которого у вас нет разрешения на чтение (см. Разрешение файла в разделе «Свойства файла»).

Чтобы узнать, доступен ли файл для чтения, выполните метод File.canRead().

if (infile.canRead()) {
    //We can read from it.

}

Чтобы установить его для чтения, используйте метод File.setReadable(true).

if (!infile.canRead()) {
   infile.setReadable(true);
}

В качестве альтернативы вы можете использовать java.io.FilePermission для предоставления разрешения на чтение файла.

FilePermission permission = new FilePermission("C:\\Users\\FSSD\\Desktop\\My Test", "read");

Или

FilePermission permission = new FilePermission("C:\\Users\\FSSD\\Desktop\\My Test", FilePermission.READ);
1 голос
/ 17 августа 2011

Я бы поместил мои файлы в каталог, который не принадлежит пользователю /...

Попробуйте поместить ваши файлы в c: / mytest /

...