Запись и чтение из файла в java

199
22 марта 2018, 08:25

Есть int[] массив, в нём такие целые числа: 18 3 34 35 8 0 22 10, как записать это в файл .txt и считать чтобы получить не 1 8 3 3 4 3 5 8 и т.д. или ASCI-коды, а первоначальную строку?
Спасибо!

Answer 1
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class FileReadWriteExample {
static final File FILE = new File("tester/hello.txt");
static Integer[] array = {18, 3, 34, 35, 8, 0, 22, 10};
public static void main(String[] args) throws IOException {
    writeArray(array, FILE);
    Integer[] array = readArray(FILE);
    System.out.println(Arrays.asList(array));
}
static void writeArray(Integer[] array, File file) throws FileNotFoundException{
    PrintStream printStream = new PrintStream(file);
    for(Integer i : array) {
        printStream.print(i);
        printStream.append(' ');
    }
}
static Integer[] readArray(File file) throws FileNotFoundException{
    Scanner scanner = new Scanner(file);
    List<Integer> list = new ArrayList<>();
    while (scanner.hasNext()){
        list.add(scanner.nextInt());
    }
    Integer[] array = new Integer[list.size()];
    list.toArray(array);
    return array;
}
}
Answer 2

Самый простой способ:

    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.logging.Logger;
    public class ArrayInt {
        private static final Logger LOG = Logger.getLogger(ArrayInt.class.getName());
        public static void main(String[] args) {
            int[] a = {18, 3, 34, 35, 8, 0, 22, 10};
            try {
                File file = File.createTempFile("www", ".txt");
                System.out.println(file.getAbsolutePath());
                try (FileWriter fileWriter = new FileWriter(file);) {
                    for (int i : a) {
                        fileWriter.write(i);
                    }
                    fileWriter.flush();
                }
                List<Integer> listInt = new ArrayList();
                try (FileReader fileReader = new FileReader(file)) {
                    int ch;
                    while ((ch = fileReader.read()) != -1) {
                        listInt.add(ch);
                    }
                    Integer[] newA = new Integer[listInt.size()];
                    newA = listInt.toArray(newA);
                    System.out.println(Arrays.toString(newA));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
Answer 3

С помощью сериализации (даже без библиотек) можно реализовать так:

  1. типизированно

    public static void main(String[] args) throws Exception {
        int mass[] = {8, 16, 32};
        ByteBuffer buffer = ByteBuffer.allocate(mass.length * 4);
        buffer.asIntBuffer().put(mass);
        Files.write(Paths.get(tmp.txt), buffer.array(), StandardOpenOpetion.CREATE, StandardOpenOption.WRITE);
        int massRead[] = new int[mass.length];
    ByteBuffer.wrap(Files.readAllBytes(Paths.get("tmp.txt"))).asIntBuffer().get(massRead);
        System.out.println(Arrays.equals(mass, massRead));
    }
    
    1. без типизации

      public static void main(String[] args) throws Exception { int mass[] = {8, 16, 32};

      // добавить закрытие стримов
      new ObjectOutputStream(new FileOutputStream("tmp.txt")).writeObject(mass);
      

      int massRead[] = (int[]) (new ObjectInputStream(new FileInputStream("tmp.txt")).readObject());

      System.out.println(Arrays.equals(mass, massRead));
      

      }

PS под рукой нет среды разработки, писал в блокноте, поправьте если что не так

READ ALSO
В android tv java.util.Map не работает?

В android tv java.util.Map не работает?

В android tv подключил компонент в приложение webview и при серфинге страниц в вебвью не передаются никаким образом http_referer не в ручную не просто как...

187
Как подключить картинку через &lt;img&gt;?

Как подключить картинку через <img>?

Мне аж стыдно такое спрашиватьНе получается подключить картинку ( Что я уже только не писал в <img src=""> Может кто подскажет

226
Запрет на ввод символов в поле

Запрет на ввод символов в поле

Мне нужно следующее: 1 - пользователь вводит информацию в форму 2 - js проверяет символы, которые ввел пользователь и выводит предупреждение...

226
Как получить style width при его изменении?

Как получить style width при его изменении?

Здравствуйте, коллегиНужна ваша помощь

251