어떻게 파일을 생성하고 Java로 파일을 작성합니까?



Answers

자바 7 이상 :

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
              new FileOutputStream("filename.txt"), "utf-8"))) {
   writer.write("something");
}

유용한 유틸리티가 있습니다.

FileWriter 사용할 수도 있지만 기본 인코딩을 사용한다는 점에 유의하십시오. 이는 종종 나쁜 생각입니다. 인코딩을 명시 적으로 지정하는 것이 가장 좋습니다.

아래는 Java에 대한 최초의 7 가지 답변입니다.

Writer writer = null;

try {
    writer = new BufferedWriter(new OutputStreamWriter(
          new FileOutputStream("filename.txt"), "utf-8"));
    writer.write("Something");
} catch (IOException ex) {
    // Report
} finally {
   try {writer.close();} catch (Exception ex) {/*ignore*/}
}

참고 항목 : 파일 읽기, 쓰기 및 만들기 (NIO2 포함).

Question

자바에서 (텍스트) 파일을 만들고 쓰는 가장 간단한 방법은 무엇입니까?




다음과 같은 간단한 방법이 있습니다.

File file = new File("filename.txt");
PrintWriter pw = new PrintWriter(file);

pw.write("The world I'm coming");
pw.close();

String write = "Hello World!";

FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);

fw.write(write);

fw.close();



저자는 EoL'd 된 Java 버전의 솔루션 (Sun과 IBM이 모두 기술적으로 가장 널리 사용되는 JVM 임)을 요구하는지 여부를 지정하지 않았으므로 대부분의 사람들이 필자의 질문이 텍스트 (비 - 바이너리) 파일이라고 지정되기 전에 나는 나의 대답을 제공하기로 결정했다.

우선 Java 6의 수명이 다해 가고 있으며 작성자가 기존 호환성을 필요로하지 않았으므로 자동으로 Java 7 이상 (Java 7은 IBM에서 아직 출시하지 않았습니다)을 의미합니다. 따라서 파일 I / O 자습서를 바로보실 수 있습니다. https://docs.oracle.com/javase/tutorial/essential/io/legacy.html

Java SE 7 릴리스 이전에는 java.io.File 클래스가 파일 I / O에 사용 된 메커니즘 이었지만 몇 가지 단점이있었습니다.

  • 많은 메소드가 실패 할 때 예외를 던지지 않으므로 유용한 오류 메시지를 얻는 것이 불가능했습니다. 예를 들어 파일 삭제가 실패한 경우 프로그램은 "삭제 실패"를 수신하지만 파일이 존재하지 않았거나 사용자에게 사용 권한이 없거나 다른 문제가 있었기 때문에 프로그램이 실패했는지 여부를 알 수 없습니다.
  • 이름 바꾸기 방법이 여러 플랫폼에서 일관되게 작동하지 않았습니다.
  • 심볼릭 링크에 대한 실질적인 지원은 없었습니다.
  • 파일 권한, 파일 소유자 및 기타 보안 속성과 같은 메타 데이터에 대한 추가 지원이 필요했습니다. 파일 메타 데이터에 액세스하는 것이 비효율적이었습니다.
  • 많은 File 메서드는 확장되지 않았습니다. 서버를 통해 큰 디렉토리 목록을 요청하면 중단 될 수 있습니다. 또한 큰 디렉토리는 메모리 자원 문제를 일으켜 서비스 거부를 초래할 수 있습니다.
  • 순환 적 심볼릭 링크가있는 경우 재귀 적으로 파일 트리를 걸고 적절하게 응답 할 수있는 안정적인 코드를 작성할 수 없었습니다.

오, 그게 java.io를 배제합니다. 파일. 파일을 쓰거나 추가 할 수없는 경우 이유를 알지 못할 수도 있습니다.

다음 자습서를 계속 검토 할 수 있습니다. https://docs.oracle.com/javase/tutorial/essential/io/file.html#common

미리 텍스트 파일에 작성 (추가) 할 모든 행이있는 경우 https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-java.lang.Iterable-java.nio.charset.Charset-java.nio.file.OpenOption...- 권장합니다. https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-java.lang.Iterable-java.nio.charset.Charset-java.nio.file.OpenOption...-

다음은 간단한 예입니다.

Path file = ...;
List<String> linesInMemory = ...;
Files.write(file, linesInMemory, StandardCharsets.UTF_8);

또 다른 예 (추가) :

Path file = ...;
List<String> linesInMemory = ...;
Files.write(file, linesInMemory, Charset.forName("desired charset"), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.WRITE);

파일 내용을 다음과 같이 작성하려는 경우 https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#newBufferedWriter-java.nio.file.Path-java.nio.charset.Charset-java.nio.file.OpenOption...-

단순화 된 예 (자바 8 이상) :

Path file = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file)) {
    writer.append("Zero header: ").append('0').write("\r\n");
    [...]
}

또 다른 예 (추가) :

Path file = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file, Charset.forName("desired charset"), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.WRITE)) {
    writer.write("----------");
    [...]
}

이 방법은 작성자에게 최소한의 노력을 요구하며 [텍스트] 파일에 쓸 때 다른 모든 사람들보다 선호해야합니다.




public class Program {
    public static void main(String[] args) {
        String text = "Hello world";
        BufferedWriter output = null;
        try {
            File file = new File("example.txt");
            output = new BufferedWriter(new FileWriter(file));
            output.write(text);
        } catch ( IOException e ) {
            e.printStackTrace();
        } finally {
          if ( output != null ) {
            output.close();
          }
        }
    }
}



다음은 Java로 파일을 작성하고 작성하는 몇 가지 방법입니다.

FileOutputStream 사용하기

try {
  File fout = new File("myOutFile.txt");
  FileOutputStream fos = new FileOutputStream(fout);
  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
  bw.write("Write somthing to the file ...");
  bw.newLine();
  bw.close();
} catch (FileNotFoundException e){
  // File was not found
  e.printStackTrace();
} catch (IOException e) {
  // Problem when writing to the file
  e.printStackTrace();
}

FileWriter 사용하기

try {
  FileWriter fw = new FileWriter("myOutFile.txt");
  fw.write("Example of content");
  fw.close();
} catch (FileNotFoundException e) {
  // File not found
  e.printStackTrace();
} catch (IOException e) {
  // Error when writing to the file
  e.printStackTrace();
}

PrintWriter 사용하기

try {
  PrintWriter pw = new PrintWriter("myOutFile.txt");
  pw.write("Example of content");
  pw.close();
} catch (FileNotFoundException e) {
  // File not found
  e.printStackTrace();
} catch (IOException e) {
  // Error when writing to the file
  e.printStackTrace();
}

OutputStreamWriter 사용하기

try {
  File fout = new File("myOutFile.txt");
  FileOutputStream fos = new FileOutputStream(fout);
  OutputStreamWriter osw = new OutputStreamWriter(fos);
  osw.write("Soe content ...");
  osw.close();
} catch (FileNotFoundException e) {
  // File not found
  e.printStackTrace();
} catch (IOException e) {
  // Error when writing to the file
  e.printStackTrace();
}

Java에서 파일읽고 쓰는 방법에 대한 자습서를 확인하십시오.




내가 찾을 수있는 가장 간단한 방법은 다음과 같습니다.

Path sampleOutputPath = Paths.get("/tmp/testfile")
try (BufferedWriter writer = Files.newBufferedWriter(sampleOutputPath)) {
    writer.write("Hello, world!");
}

아마도 1.7 이상에서만 작동합니다.




심지어 사용중인 OS와 독립적 인 시스템 속성을 사용하여 임시 파일을 만들 수도 있습니다.

File file = new File(System.*getProperty*("java.io.tmpdir") +
                     System.*getProperty*("file.separator") +
                     "YourFileName.txt");



여러 파일의 경우 다음을 사용할 수 있습니다.

static void out(String[] name, String[] content) {

    File path = new File(System.getProperty("user.dir") + File.separator + "OUT");

    for (File file : path.listFiles())
        if (!file.isDirectory())
            file.delete();
    path.mkdirs();

    File c;

    for (int i = 0; i != name.length; i++) {
        c = new File(path + File.separator + name[i] + ".txt");
        try {
            c.createNewFile();
            FileWriter fiWi = new FileWriter(c.getAbsoluteFile());
            BufferedWriter buWi = new BufferedWriter(fiWi);
            buWi.write(content[i]);
            buWi.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

잘 작동합니다.




입력 및 출력 스트림을 사용한 파일 읽기 및 쓰기 :

//Coded By Anurag Goel
//Reading And Writing Files
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


public class WriteAFile {
    public static void main(String args[]) {
        try {
            byte array [] = {'1','a','2','b','5'};
            OutputStream os = new FileOutputStream("test.txt");
            for(int x=0; x < array.length ; x++) {
                os.write( array[x] ); // Writes the bytes
            }
            os.close();

            InputStream is = new FileInputStream("test.txt");
            int size = is.available();

            for(int i=0; i< size; i++) {
                System.out.print((char)is.read() + " ");
            }
            is.close();
        } catch(IOException e) {
            System.out.print("Exception");
        }
    }
}



package fileoperations;
import java.io.File;
import java.io.IOException;

public class SimpleFile {
    public static void main(String[] args) throws IOException {
        File file =new File("text.txt");
        file.createNewFile();
        System.out.println("File is created");
        FileWriter writer = new FileWriter(file);

        // Writes the content to the file
        writer.write("Enter the text that you want to write"); 
        writer.flush();
        writer.close();
        System.out.println("Data is entered into file");
    }
}



텍스트 파일에 문자열을 입력합니다.

String content = "This is the content to write into a file";
File file = new File("filename.txt");
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close(); // Be sure to close BufferedWriter

우리는 쉽게 새 파일을 만들고 그 안에 내용을 추가 할 수 있습니다.




기존 파일을 덮어 쓰지 않고 파일을 만들려면 :

System.out.println("Choose folder to create file");
JFileChooser c = new JFileChooser();
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
c.showOpenDialog(c);
c.getSelectedFile();
f = c.getSelectedFile(); // File f - global variable
String newfile = f + "\\hi.doc";//.txt or .doc or .html
File file = new File(newfile);

try {
    //System.out.println(f);
    boolean flag = file.createNewFile();

    if(flag == true) {
        JOptionPane.showMessageDialog(rootPane, "File created successfully");
    }
    else {
        JOptionPane.showMessageDialog(rootPane, "File already exists");
    }
    /* Or use exists() function as follows:
        if(file.exists() == true) {
            JOptionPane.showMessageDialog(rootPane, "File already exists");
        }
        else {
            JOptionPane.showMessageDialog(rootPane, "File created successfully");
        }
    */
}
catch(Exception e) {
    // Any exception handling method of your choice
}



나는 이것이 가장 짧은 방법이라고 생각한다.

FileWriter fr = new FileWriter("your_file_name.txt"); // After '.' write
// your file extention (".txt" in this case)
fr.write("Things you want to write into the file"); // Warning: this will REPLACE your old file content!
fr.close();



용도:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myFile.txt"), StandardCharsets.UTF_8))) {
    writer.write("text to write");
} 
catch (IOException ex) {
    // Handle me
}  

try() 를 사용하면 스트림이 자동으로 닫힙니다. 이 버전은 짧고 빠르며 (버퍼링 됨) 인코딩을 선택할 수 있습니다.

이 기능은 Java 7에서 도입되었습니다.




Related



Tags

java java   file-io