Java IO輸入輸出及亂碼問題

YunSoul發表於2018-08-22
/** 
     * 以二進位制讀出檔案內容 
     * @param file 
     * @return 
     * @throws IOException 
     */  
    private static byte[] readFileBytes(File file) throws IOException {  
        byte[] arrayOfByte = new byte[1024];  
        ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();  
        FileInputStream fis = new FileInputStream(file);  
        while (true) {  
            int i = fis.read(arrayOfByte);  
            if (i != -1) {  
                localByteArrayOutputStream.write(arrayOfByte, 0, i);  
            } else {  
                return localByteArrayOutputStream.toByteArray();  
            }  
        }  
    }
複製程式碼

下面是我從兩個不同的Java檔案中得到的程式碼。 一個是"檔案"與主類,另一個是"filewrite"。"

我可以實現字串輸入和輸出。 但輸出檔案在開頭有亂碼,我不確定為什麼。

[File.Java ]

package file;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class File
{
    public static void main(String[] args)
    {
        try(BufferedReader br =new BufferedReader(newFileReader("B:fileIn.txt")))
        {
            String stCurrent;
            while((stCurrent = br.readLine())!=null)
            {
                System.out.println(stCurrent);
                
            }
        }catch(IOException e)
        {
            e.printStackTrace();
                
        }
        FileWrite fW =newFileWrite(); 
        fW.serializeAddress("Boston","Canada");
    }
}
複製程式碼
[FileWrite.Java ]

package file;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class FileWrite
{
    public void serializeAddress(String city,String country)
    {
        try
        {
            FileOutputStream fout =new FileOutputStream("B:address.txt");
            ObjectOutputStream obOut =new ObjectOutputStream(fout);  
            obOut.writeUTF(city); 
            obOut.writeUTF(country); 
            obOut.close();
            System.out.println("Output Done");
        }catch(Exception ex)
        { 
            ex.printStackTrace();
        }
    }
}
複製程式碼

使用了obOut.writeUTF(country);" 那麼久對應的使用obOut.writeUTF(city, counry) 中。

PrintStream ps =new PrintStream(newFileWriter("B:addressPS.txt")); 
ps.println(city); 
ps.println(country); 
ps.close();
複製程式碼

#### YunSoul技術分享,掃碼關注微信公眾號##
    ——只要你學會了之前所不會的東西,只要今天的你強過了昨天的你,那你就一直是在進階的路上了。 Java IO輸入輸出及亂碼問題

相關文章