Ao ler o fluxo de arquivos, ele é frequentemente encontrado por Glebled. Primeiro, claramente, os conceitos e diferenças entre arquivos de texto e arquivos binários.
Os arquivos de texto são arquivos baseados em caracteres. Os arquivos binários são baseados em arquivos de codificação baseados em valor.
Portanto, pode-se observar que o arquivo de texto é basicamente codificado (também existem códigos não fixados como o UTF-8). E arquivos binários podem ser vistos com o corpo longo, porque é uma codificação de valor, quantos picadas representam um valor, o que é determinado por você.
Para arquivos binários, você não deve usar uma string, porque a string usará a codificação padrão do sistema quando a string padrão é a inicialização.
Para arquivos de texto, porque a codificação é corrigida, desde que você leia o arquivo, use o próprio arquivo para analisar o arquivo e, em seguida, obtenha o byte. . Embora os arquivos binários também possam obter seu formato de codificação de texto, ele é impreciso, por isso não se pode dizer ao mesmo tempo.
A operação específica é a seguinte:
1) Obtenha o formato do arquivo de texto
Public static string getfileEncode (caminho da string) {string charset = "ASCI"; ); ] == (byte) 0xfe) {charset = "unicode"; {{Charset = "unicode"; (byte) 0xbf) {charset = "utf8"; ! = - 1) {loc ++; <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf <= 0xdf) {read = bis.read (); 0x80-0xbf) ou pode ser continuado; = Leitura && leia <= 0xbf) {charset = "utf-8"; + Integer.ToHexString (Read);}} Catch (Exceção e) {e.printStackTrace ();} finalmente {if (bis! = Null) {try {bis.close ();} captura ption ex) {}}} Retornar charset;} private estático string getEncode (int flag1, int flag2, int flag3) {string code = "" ""; -8) if (flag1 == 255 && flag2 == 254) {code = "unicode"; == 191) {Encode = "utf8";} else {code = "ASCI";2) Leia o fluxo do arquivo através do formato de codificação do arquivo
/*** Obtenha o conteúdo do arquivo através do caminho. ! */ public static stringfile (String Path) {String Data = null; Format String Code = FileEncode.getFileEncode (caminho); O ambiente não significa que o sistema operacional codifica // code = system.getProperty ("file.encoding"); 1; , comprimento);} data = new String (sb);} catch (Exceção e) {e.printStackTrace (); (ISR! }3) Escreva o arquivo através do formato especificado pelo arquivo
/*** Salvar o conteúdo do arquivo de acordo com o caminho especificado e o formato de codificação. Para o conteúdo do texto, o método de segurança * * @param dados * Os dados de bytes que serão gravados no arquivo * @param caminho *, contém o nome do arquivo * @return boolean * Quando a gravação é concluída, retorne a true; / Public static boolean writefile (dados de byte [], caminho da string, código da string) {sinalizador boolean = true; = novo arquivo (File.get Parent ()); } OSW = New OputStreamWriter (New FileOutputStream (Path), Código); info ("Tofile IO Exception:"+e.getMessage ()); ();4) Para arquivos binários e há muito poucos conteúdos, como documentação do Word, etc., você pode ler e escrever arquivos das seguintes maneiras
/** * Leia os arquivos do caminho especificado para a matriz de bytes, você pode escolher este método para algum conteúdo de formato não -text * 457364578634785634534 * @param caminho * caminho do arquivo, incluindo nome do arquivo * @return byte [] * byte byte byte BYTE BYTE BYTE BY BYTE BY BYTE BY BYTE ARRAY * */ BYTE Public Static [] getFile (String Path) lança IoException {FileInputStream Stream = new FileIrtStream (Path); Stream.read (Data); * @param dados * 将要写入到文件中的字节数据 * @param caminho * 文件路径, 包含文件名 * @return boolean isok 当写入完毕时返回 true; Byte Data [], Patch) lança Exceção {FileOutputStream = novo FileOutputStream (Path);O exposto acima é todo o conteúdo deste artigo.