Обработка файлов в Java - PullRequest
2 голосов
/ 07 июня 2011

У меня есть код ниже.

Исходный код ниже взят из файла x.java.Файл hi.html находится в том же каталоге, что и x.java.

Я получаю исключение "файл не найден", даже если файл присутствует.Я что-то упустил?

    public void sendStaticResource() throws IOException{
    byte[] bytes = new byte[1024];
    FileInputStream fis = null;

    try{
        File file = new File("hi.html");

        boolean p  = file.exists();

        int i = fis.available();

        fis = new FileInputStream(file);

        int ch = fis.read(bytes, 0, 1024);

        while(ch!=-1){
            output.write(bytes, 0, ch);
            ch = fis.read(bytes, 0, 1024);
        }

    }catch(Exception e){
        String errorMessage = "file not found";
        output.write(errorMessage.getBytes());
    }finally {
        if(fis != null){
            fis.close();
        }

    }

}

Ответы [ 6 ]

4 голосов
/ 07 июня 2011

Каталог файла .java не обязательно является направлением, в котором работает ваш код! Вы можете проверить текущий рабочий каталог вашей программы, например:

 System.out.println( System.getProperty( "user.dir" ) );

Вы можете использовать строку System.getProperty ("user.dir"), чтобы сделать ваше относительное имя файла абсолютным! Просто добавьте его к имени файла:)

3 голосов
/ 07 июня 2011

Посмотрите на ваше свойство "user.dir".

String curDir = System.getProperty("user.dir");

Вот где программа будет искать свои файлы, которые не имеют полного пути.

0 голосов
/ 16 августа 2017
Write data character by character, into Text file by Java: 

use FileWriter Class-


import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.Writer;

    public class WriteFile {

    public static void main(String[] args) throws Exception{
       //File writer takes chars and convert into bytes and write to a file 
        FileWriter writer = new FileWriter("path/file_name.txt");
       //if file not exits then created it, else override data
            writer.write('A'); 
            writer.write('E');
            writer.write('I');
            writer.write('O');
            writer.write('U');  

            writer.close();
    System.out.println("Successfully Written");
}
}
0 голосов
/ 16 августа 2017
File Handling in Java:

Use File class for Representing and manipulating file or folder/directory.
   you can use constructor :
   ex. File file = new File("path/file_name.txt");
             or
       File file = new File("Path","file_name");

 File representation example: 

import java.io.File;
import java.util.Date;
import java.io.*;
import java.util.*;

public class FileRepresentation {
    public static void main(String[] args) {
    File f =new File("path/file_name.txt");
    if(f.exists()){
        System.out.println("Name " + f.getName());
        System.out.println("Absolute path: " +f.getAbsolutePath());
        System.out.println("Is writable " +f.canWrite());
        System.out.println("Is readable " + f.canRead());
        System.out.println("Is File " + f.isFile());
        System.out.println("Is Directory " + f.isDirectory());
        System.out.println("Last Modified at " + new Date(f.lastModified()));
        System.out.println("Length " + f.length() +"bytes long.");
    }//if
    }//main
}//class
0 голосов
/ 07 июня 2011

Я думаю, вы получите NullPointerException:

FileInputStream fis = null;

тогда звонок:

int i = fis.available();

приведет к NullPointerException, так как первое ненулевое присвоение fis позже:

fis = new FileInputStream(file);
0 голосов
/ 07 июня 2011
  • Перехватите исключение FileNotFoundException, прежде чем перехватывать исключение, чтобы быть уверенным, что это настоящий тип исключения.
  • Поскольку вы не указываете абсолютное местоположение файла, который он ищет в вашем рабочем каталоге.Вы можете сохранить абсолютный путь в файле свойств и использовать его вместо этого или использовать System.getProperty("user.dir") для возврата каталога, из которого вы запускаете приложение Java.

Код для получения значения ключа из файлов свойств

private void getPropertyFileValues() {
    String currentPath = System.getProperty("user.dir") + System.getProperty("file.separator") + "Loader.properties";
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(currentPath);
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }
    Properties props = new Properties();
    try {
        props.load(fis);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    String filePath= props.getProperty("FILE_PATH");
    try {
        fis.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
...