java - 텍스트 - 자바 파일 입출력 내용 수정




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

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


Google의 Guava 라이브러리를 사용하여 매우 쉽게 파일을 만들고 쓸 수 있습니다.

package com.zetcode.writetofileex;

import com.google.common.io.Files;
import java.io.File;
import java.io.IOException;

public class WriteToFileEx {

    public static void main(String[] args) throws IOException {

        String fileName = "fruits.txt";
        File file = new File(fileName);

        String content = "banana, orange, lemon, apple, plum";

        Files.write(content.getBytes(), file);
    }
}

이 예에서는 프로젝트 루트 디렉토리에 fruits.txt 파일을 새로 만듭니다.


JFilechooser를 사용하여 고객과의 콜렉션 읽기 및 파일 저장.

private void writeFile(){

    JFileChooser fileChooser = new JFileChooser(this.PATH);
    int retValue = fileChooser.showDialog(this, "Save File");

    if (retValue == JFileChooser.APPROVE_OPTION){

        try (Writer fileWrite = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileChooser.getSelectedFile())))){

            this.customers.forEach((c) ->{
                try{
                    fileWrite.append(c.toString()).append("\n");
                }
                catch (IOException ex){
                    ex.printStackTrace();
                }
            });
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }
}

Java 7 이상을 사용해 볼 가치가 있습니다.

 Files.write(Paths.get("./output.txt"), "Information string herer".getBytes());

그것은 유망 해 보인다 ...


Java 8에서는 파일 및 경로를 사용하고 try-with-resources 구조를 사용합니다.

import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class WriteFile{
    public static void main(String[] args) throws IOException {
        String file = "text.txt";
        System.out.println("Writing to file: " + file);
        // Files.newBufferedWriter() uses UTF-8 encoding by default
        try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(file))) {
            writer.write("Java\n");
            writer.write("Python\n");
            writer.write("Clojure\n");
            writer.write("Scala\n");
            writer.write("JavaScript\n");
        } // the file will be automatically closed
    }
}

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

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();

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

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();

다음은 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에서 파일읽고 쓰는 방법에 대한 자습서를 확인하십시오.


상대적으로 통증이없는 경험을 원한다면 Apache Commons IO 패키지 , 특히 FileUtils 클래스를 살펴볼 수도 있습니다.

타사 라이브러리를 확인하는 것을 잊지 마십시오. Joda-Time 의 날짜 조작, 일반적인 문자열 조작을위한 Apache Commons Lang StringUtils 등을 사용하면 코드를보다 쉽게 ​​읽을 수 있습니다.

Java는 훌륭한 언어이지만 표준 라이브러리는 때로는 약간 낮은 수준입니다. 그럼에도 불구하고 강력하지만 낮은 수준.


샘플 파일 만들기 :

try {
    File file = new File ("c:/new-file.txt");
    if(file.createNewFile()) {
        System.out.println("Successful created!");
    }
    else {
        System.out.println("Failed to create!");
    }
}
catch (IOException e) {
    e.printStackTrace();
}

어떤 이유로 든 작성 및 작성 작업을 분리하려는 경우 자바와 동일한 touch

try {
   //create a file named "testfile.txt" in the current working directory
   File myFile = new File("testfile.txt");
   if ( myFile.createNewFile() ) {
      System.out.println("Success!");
   } else {
      System.out.println("Failure!");
   }
} catch ( IOException ioe ) { ioe.printStackTrace(); }

createNewFile() 은 원자 검사로 파일을 생성합니다. 예를 들어, 파일을 작성하기 전에 파일을 작성했는지 확인하려는 경우 유용 할 수 있습니다.


용도:

JFileChooser c = new JFileChooser();
c.showOpenDialog(c);
File writeFile = c.getSelectedFile();
String content = "Input the data here to be written to your file";

try {
    FileWriter fw = new FileWriter(writeFile);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.append(content);
    bw.append("hiiiii");
    bw.close();
    fw.close();
}
catch (Exception exc) {
   System.out.println(exc);
}

이 패키지를 포함하기 만하면됩니다.

java.nio.file

다음 코드를 사용하여 파일을 작성할 수 있습니다.

Path file = ...;
byte[] buf = ...;
Files.write(file, buf);

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

//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");
        }
    }
}

저자는 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("----------");
    [...]
}

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


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

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

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


한 줄만! pathline 은 문자열입니다.

import java.nio.file.Files;
import java.nio.file.Paths;

Files.write(Paths.get(path), lines.getBytes());

아래의 각 코드 샘플은 IOException throw 할 수 있습니다. try / catch / finally 블록은 간결성을 위해 생략되었습니다. 예외 처리에 대한 정보는 이 자습서 를 참조하십시오.

텍스트 파일 만들기 (파일이 이미 있으면 덮어 씁니다).

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();

바이너리 파일 만들기 (파일을 덮어 씁니다) :

byte data[] = ...
FileOutputStream out = new FileOutputStream("the-file-name");
out.write(data);
out.close();

Java 7 이상의 사용자는 Files 클래스를 사용하여 Files 에 쓸 수 있습니다.

텍스트 파일 만들기 :

List<String> lines = Arrays.asList("The first line", "The second line");
Path file = Paths.get("the-file-name.txt");
Files.write(file, lines, Charset.forName("UTF-8"));
//Files.write(file, lines, Charset.forName("UTF-8"), StandardOpenOption.APPEND);

이진 파일 만들기 :

byte data[] = ...
Path file = Paths.get("the-file-name");
Files.write(file, data);
//Files.write(file, data, StandardOpenOption.APPEND);

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

public class FileWriterExample {
    public static void main(String [] args) {
        FileWriter fw= null;
        File file =null;
        try {
            file=new File("WriteFile.txt");
            if(!file.exists()) {
                file.createNewFile();
            }
            fw = new FileWriter(file);
            fw.write("This is an string written to a file");
            fw.flush();
            fw.close();
            System.out.println("File written Succesfully");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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");
    }
}




file-io