2015-10-08 3 views
1

Как написать массив двумерных символов в файл. Я искал решение повсюду, но не нашел ответа.Как написать 2D-массив символов в файл

void printDATA(){ 
String[][] stringArray = Arrays.copyOf(data, data.length, String[][].class); 
char[][] charArray = new char[stringArray.length][stringArray[0].length]; 
      for(int i = 0; i < stringArray.length; i++) 
      { 
       for(int j = 0; j < stringArray[0].length; j++) 
       { 
        charArray[i][j] = stringArray[i][j].charAt(0); 
       } 
      } 
     File file = new File("result.doc"); 
     try { 
      //FileWriter fout = new FileWriter(file);//Gives error 
      PrintWriter fout = new PrintWriter(file);//This also gives error 
      fout.write(charArray); 
      fout.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

ответ

1

Writer API не поддерживает записи массивов массивов. Только int (это действительно должно быть char), String, или char[]. Перебирайте массивы, чтобы писать.

for (int i = 0; i < charArray.length; i++) { 
    fout.write(charArray[i]); 
} 

Возможно, вы захотите также добавить символы новой строки.

+0

На самом деле, я действительно хочу напечатать либо 2D-массив символов, либо массив 2D-строк. Есть ли альтернативный метод .. ?? –

+0

Не использовать общие API. Это поможет объяснить, что вы имеете в виду, напечатав 2D-массив. Возьмите этот массив: 'String [] [] test = {{" foo "," bar "," baz "}, {" 1 "," 12 "," 123 "}, {" the "," quick " «коричневый», «лиса»}}; '. Что вы ожидаете от печати? – wmorrell

+0

Я хочу, чтобы тест печатался на текстовом документе, используя обработку файлов. –

0

Псевдо-код:

for(int i =0;i< 1st dimension; i++) 
    { for(int j =0;j< 2nd dimension; j++) 
     { 
      write (array[i][j]) 
      write (some symbol) 
     } 
    write (some other symbol) 
    } 

Затем вам нужно будет помнить символы разграничения, когда вы хотите прочитать из файла.

Затем вам нужно будет прочитать весь файл как String и разбить его, используя 1-й символ, а затем 2-й символ.

Например, давайте возьмем следующий 2D массив:

яблоко оранжевый ананас.

банановый томатный виноград.

Вы можете записать его в файл как строку 1D как: яблоко, апельсин, ананас, банан, помидор, виноград;

Затем, когда вы читаете файл как строку, вы делитесь на ";" и получить: яблоко, апельсин, ананас банан, помидор, виноград

затем разделите каждый на «,» и заново постройте свой 2D-массив.

+0

То есть, если вы не хотите использовать какой-либо API или сложный код –

+0

@M Я считаю, что обработка файлов с использованием FileWriter поддерживает только один размерный массив символов. Любой другой метод OutputStream или альтернативный метод.? –

+0

Я отредактировал мой ответ –

Смежные вопросы