`

java reader file & writer file

    博客分类:
  • java
 
阅读更多
package com.xjh.dh;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * 
 * ok
 * 
 * @author xiejiaohui
 *
 */
public class FileCheck {

	public static void main(String[] args) throws Exception {
		String file = "c:\\a.csv";
		String write_ok = "c:\\a_ok.csv";
		String write_er = "c:\\a_er.csv";
		
		// 没有乱码
		String read_charset = "gbk"; // 读文件的字符集
		String writer_charset = "utf-8"; // 写文件的字符集
		
		// 乱码
//		String read_charset = "utf-8";
//		String writer_charset = "gbk";
		
		// 乱码
//		String read_charset = "utf-8";
//		String writer_charset = "utf-8";
		
		// 乱码
//		String read_charset = "gbk";
//		String writer_charset = "gbk";
		
		// 乱码
//		String read_charset = "iso-8859-1";
//		String writer_charset = "iso-8859-1";
		
//		String charset = "utf-8";
//		String charset = "iso-8859-1";
//		String charset = "gb2312";
		InputStreamReader inputStreamReader = new InputStreamReader(
				new FileInputStream(file), read_charset);
		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

		FileOutputStream outputStream_ok = new FileOutputStream(write_ok);
		FileOutputStream outputStream_er = new FileOutputStream(write_er);

		OutputStreamWriter writer_ok = new OutputStreamWriter(outputStream_ok,
				writer_charset);
		OutputStreamWriter writer_er = new OutputStreamWriter(outputStream_er,
				writer_charset);
		
		try {
			String s = null;
			int i = 0;
			while ((s = bufferedReader.readLine()) != null) {
				String[] s2 = s.split("\\,");
				if (s2.length != 54) {
//					System.out.println("error in line: " + (i + 1) + " " + s);
					System.out.println(s);
					i++;
					writer_er.append(s);
					writer_er.append("\n");
					continue;
				} else {
					writer_ok.append(s);
					writer_ok.append("\n");
				}
				i++;
			}
			System.out.println("ok " + i );
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			writer_ok.close();
			writer_er.close();
			bufferedReader.close();
		}
	}
}



以下两个文件会出现乱码

package com.xjh.dh;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;

/**
 * 
 * 写出来的文件有乱码
 * 
 * @author xiejiaohui
 *
 */
public class FileCheck2 {

	public static void main(String[] args) throws Exception {
		String file = "c:\\a.csv";
		FileWriter fileWriter_ok = new FileWriter(new File("c:\\a_ok.csv"));
		FileWriter fileWriter_er = new FileWriter(new File("c:\\a_er.csv"));
		String charset = "gbk";
//		 String charset = "utf-8";
//		String charset = "iso-8859-1";
//		String charset = "gb2312";
		InputStreamReader inputStreamReader = new InputStreamReader(
				new FileInputStream(file), charset);
		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);		
		
		try {
			String s = null;
			int i = 0;
			while ((s = bufferedReader.readLine()) != null) {
				String[] s2 = s.split("\\,");
				if (s2.length != 54) {
					System.out.println("error in line: " + (i + 1) + " " + s);
//					System.out.println(s);
					i++;
					fileWriter_er.append(s);
					fileWriter_er.append("\n");
					continue;
				} else {
					fileWriter_ok.append(s);
					fileWriter_ok.append("\n");
				}
				i++;
			}
			System.out.println("ok " + i );
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			fileWriter_er.close();
			fileWriter_ok.close();
			bufferedReader.close();
		}

	}

}



package com.xjh.dh;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

/**
 * 
 * 写出来的文件有乱码
 * 
 * @author xiejiaohui
 *
 */
public class FileCheck3 {

	public static void main(String[] args) throws Exception {
		
		BufferedReader bufferedReader = new BufferedReader(new FileReader(
				"c:\\a.csv"));
		FileWriter fileWriter_ok = new FileWriter(new File(
				"c:\\a_ok.csv"));
		FileWriter fileWriter_er = new FileWriter(new File(
				"c:\\a_er.csv"));

		try {
			String s = null;
			int i = 0;
			while ((s = bufferedReader.readLine()) != null) {
				String[] s2 = s.split("\\,");
				if (s2.length != 54) {
					System.out.println("error in line: " + (i + 1) + " " + s);
//					System.out.println(s);
					i++;
					fileWriter_er.append(s);
					fileWriter_er.append("\n");
					continue;
				} else {
					fileWriter_ok.append(s);
					fileWriter_ok.append("\n");
				}
				i++;
			}
			System.out.println("ok " + i );
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			fileWriter_er.close();
			fileWriter_ok.close();
			bufferedReader.close();
		}

	}

}

分享到:
评论

相关推荐

    Java IO流 reader和writer的方法使用

    ### Java IO流中的Reader与Writer方法使用详解 在Java编程语言中,IO(Input/Output)操作是非常重要的一个环节,它涉及到数据的读取与写入。本文将深入探讨Java IO流中的`Reader`和`Writer`类及其常用方法,并通过...

    java csv reader writer

    import java.nio.file.Paths; public class CSVReader { public static void main(String[] args) { try (FileReader reader = new FileReader("input.csv"); CSVParser parser = CSVParser.parse(reader, CSV...

    java File文件处理工具类

    Java中的`File`类是Java I/O流体系中不可或缺的一部分,它是用来操作文件和目录的基础类。`File`对象代表了文件和目录路径名的抽象表示。在这个详细的讲解中,我们将深入探讨`File`类的各种功能,包括创建、读取、...

    10.尚硅谷_java基础_IO

    IO 概述 File 类 IO 流分类 InputStream & Reader OutputStream & Writer RandomAccessFile 类 对象的序列化

    Java 语言File类的详解

    同时,File类并不涉及文件内容的读写,如需读写文件内容,还需要结合InputStream、OutputStream、Reader、Writer等流类进行操作。 通过上述介绍,我们可以看出File类在Java编程中扮演了重要角色,它为文件和目录的...

    java中IO流里面的关于File的讲解源码

    在Java编程语言中,`File`类是处理文件和目录的核心类,位于`java.io`包下。这个类提供了一系列的方法来操作文件和目录,包括创建、删除、重命名、获取属性等。当我们谈论`File`类与IO流的结合时,主要是指使用`File...

    java 文件存储 Inputstream outputstream reader writer的用法

    `InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...

    Java的File类文件读写以及图片下载的总结

    在Java编程语言中,`File`类是处理文件和目录的核心工具。它是`java.io`包的一部分,提供了许多方法来创建、读取、写入、删除文件以及操作目录。以下是对`File`类以及文件读写、复制和图片下载的详细讲解。 1. **...

    Java实现文件复制,File文件读取,写入,IO流的读取写入

    其中,`InputStream`和`OutputStream`是所有字节流的基类,而`Reader`和`Writer`则是所有字符流的基类。 - **字节流**:适用于处理二进制数据,如图片、音频文件等。`FileInputStream`和`FileOutputStream`是字节...

    java-IO.rar_File and java

    本资料"java-IO.rar_File and java"聚焦于Java I/O流在读写文件以及文件替换方面的实践应用。 一、Java I/O 流概述 Java I/O流模型基于流的概念,流可以看作是数据的序列,可以从源(如文件或网络连接)读取,也...

    用JAVA如何操作文件.doc

    在Java中,为了方便地处理文件及文件夹,`java.io`包中提供了一个非常重要的类——`File`类。这个类封装了与文件和目录相关的操作,使得开发人员能够轻松地进行文件管理。 ##### 1. 创建File对象 `File`类的对象...

    java面向对象File (I O)

    Java中有两种基本类型的输入流:`InputStream`(字节流)和`Reader`(字符流)。 - **输出流**(Output Streams):用于将数据写入到目的地。同样有两种基本类型的输出流:`OutputStream`(字节流)和`Writer`(字符...

    java_file

    字节流包括`InputStream`和`OutputStream`,字符流包括`Reader`和`Writer`。`BufferedReader`和`BufferedWriter`则增加了缓冲功能,提高读写效率。例如,使用`BufferedReader`可以按行读取文件: ```java ...

    File Organization lec 1_java_

    标题"File Organization lec 1_java_"表明我们将讨论的是Java中关于文件组织的第一课,重点可能是讲解如何在Java中进行文本文件的读写操作。 在Java中,`java.io`包提供了大量的类来处理输入/输出(I/O)操作,包括...

    Java Stream、File、IO.pdf

    Java IO 包含了字节流(InputStream 和 OutputStream)和字符流(Reader 和 Writer),分别用于处理二进制数据和文本数据。字节流适用于所有类型的数据,而字符流则更适用于处理字符编码的数据,如文本文件。 以下...

    java关于文件的操作

    总结来说,Java中的文件操作主要依赖于`java.io`包,通过`File`、`FileReader/Writer`、`BufferedReader/Writer`等类完成。对于简单的数据文件,我们可以通过读写文件并解析内容进行查询和更新。在实际开发中,根据...

    java_readwrite_file.java.zip_java card

    在给定的“java_readwrite_file.java.zip”压缩包中,我们关注的是一个名为“writefile.java”的文件,它应该包含一个用于在SD卡上进行读写操作的程序。在Java Card技术中,虽然主要涉及智能卡上的小型Java应用程序...

    JAVA 上传音乐

    字符流则有Reader和Writer系列。 在上传音乐这样的大文件场景下,通常会使用BufferedInputStream和BufferedOutputStream进行优化。这两个类通过内部缓冲区来减少对底层IO操作的调用次数,从而提高性能。例如,我们...

    File文件的操作

    它是Java.io.File类的一个子类,但在Android环境中,有一些特定的注意事项和最佳实践。以下是对`File`类在Android中的使用进行的详细说明。 ### 文件操作基础 1. **创建文件**:使用`File`类的构造函数创建一个`...

    java对文件夹、文件、TXT的操作

    使用`java.io.File`类可以创建文件和目录。创建文件的方法是`createNewFile()`,创建目录则是`mkdir()`或`mkdirs()`。`mkdirs()`特别适用于创建多级目录,如果父目录不存在,它会自动创建。 ```java File file =...

Global site tag (gtag.js) - Google Analytics