2015-10-08 71 views
1

如何將2D字符數組寫入文件。我到處搜索解決方案,但沒有找到答案。如何將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),Stringchar[]。在數組上循環寫入。

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

您可能還想要添加換行符。

+0

其實我真的想打印2D字符數組或2D字符串數組。有沒有其他的方法.. ?? –

+0

不使用通用API。這將有助於解釋打印二維數組的含義。取這個數組:String [] [] test = {{「foo」,「bar」,「baz」},{「1」,「12」,「123」},{「the」,「quick」 「brown」,「fox」}};'。你期待該計劃打印什麼? – wmorrell

+0

我想要使用文件處理在Word文檔上打印測試.. –

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

然後,你需要記住的分界符號,當你想從文件中讀取。

然後,您需要將整個文件讀取爲字符串,然後使用第一個符號和第二個符號進行拆分。

例如,讓我們採取以下2D陣列:

蘋果橙菠蘿。

香蕉番茄葡萄。你可以把它寫成一個文件,如下所示: 蘋果,橙子,菠蘿;香蕉,西紅柿,葡萄;

然後,當您以字符串的形式讀取文件時,您將「;」並得到: 蘋果,橙,菠蘿 香蕉,西紅柿,葡萄

然後拆分每個「,」並重新建立你的二維數組。

+0

這就是如果您不想使用任何API或複雜代碼 –

+0

@M我認爲使用FileWriter進行文件處理只支持一維字符數組。任何其他OutputStream方法或替代方法..? –

+0

我編輯了我的答案 –