精华内容
下载资源
问答
  • Java实现按行读取文件String file = "F:" + File.separator + "a.txt";FileInputStream fis = new FileInputStream(file);RandomAccessFile raf = new RandomAccessFile(new File(file),"r");String s ;while((s =...

    Java实现按行读取大文件

    String file = "F:" + File.separator + "a.txt";

    FileInputStream fis = new FileInputStream(file);

    RandomAccessFile raf = new RandomAccessFile(new File(file),"r");

    String s ;

    while((s =raf.readLine())!=null){

    System.out.println(s);

    }

    raf.close();

    fis.close();

    网上流行的那个俩while版本不靠谱

    可考虑bufferedinputstream和bufferedoutputstream来字节读取,这个代码太简单了,适用于非频繁操作。或采用nio的FileChannel,比较适合于高并发操作,如下为filechannel的部分代码

    File inFile = new File("D:\\error");

    File outFile = new File("D:\\to.txt");

    FileChannel inFileChannel = new FileInputStream(inFile).getChannel();

    FileChannel outFileChannel = new FileOutputStream(outFile).getChannel();

    ByteBuffer buffer = ByteBuffer.allocate(1024);

    while(-1 != inFileChannel.read(buffer)){

    buffer.flip();

    outFileChannel.write(buffer);

    buffer.clear();

    }

    outFileChannel.close();

    inFileChannel.close();

    随机读取文件内容

    public class ReadFromFile {

    /**

    * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。

    */

    public static void readFileByBytes(String fileName) {

    File file = new File(fileName);

    InputStream in = null;

    try {

    System.out.println("以字节为单位读取文件内容,一次读一个字节:");

    // 一次读一个字节

    in = new FileInputStream(file);

    int tempbyte;

    while ((tempbyte = in.read()) != -1) {

    System.out.write(tempbyte);

    }

    in.close();

    } catch (IOException e) {

    e.printStackTrace();

    return;

    }

    try {

    System.out.println("以字节为单位读取文件内容,一次读多个字节:");

    // 一次读多个字节

    byte[] tempbytes = new byte[100];

    int byteread = 0;

    in = new FileInputStream(fileName);

    ReadFromFile.showAvailableBytes(in);

    // 读入多个字节到字节数组中,byteread为一次读入的字节数

    while ((byteread = in.read(tempbytes)) != -1) {

    System.out.write(tempbytes, 0, byteread);

    }

    } catch (Exception e1) {

    e1.printStackTrace();

    } finally {

    if (in != null) {

    try {

    in.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 以字符为单位读取文件,常用于读文本,数字等类型的文件

    */

    public static void readFileByChars(String fileName) {

    File file = new File(fileName);

    Reader reader = null;

    try {

    System.out.println("以字符为单位读取文件内容,一次读一个字节:");

    // 一次读一个字符

    reader = new InputStreamReader(new FileInputStream(file));

    int tempchar;

    while ((tempchar = reader.read()) != -1) {

    // 对于windows下,\r\n这两个字符在一起时,表示一个换行。

    // 但如果这两个字符分开显示时,会换两次行。

    // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

    if (((char) tempchar) != '\r') {

    System.out.print((char) tempchar);

    }

    }

    reader.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    try {

    System.out.println("以字符为单位读取文件内容,一次读多个字节:");

    // 一次读多个字符

    char[] tempchars = new char[30];

    int charread = 0;

    reader = new InputStreamReader(new FileInputStream(fileName));

    // 读入多个字符到字符数组中,charread为一次读取字符数

    while ((charread = reader.read(tempchars)) != -1) {

    // 同样屏蔽掉\r不显示

    if ((charread == tempchars.length)

    && (tempchars[tempchars.length - 1] != '\r')) {

    System.out.print(tempchars);

    } else {

    for (int i = 0; i < charread; i++) {

    if (tempchars[i] == '\r') {

    continue;

    } else {

    System.out.print(tempchars[i]);

    }

    }

    }

    }

    } catch (Exception e1) {

    e1.printStackTrace();

    } finally {

    if (reader != null) {

    try {

    reader.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 以行为单位读取文件,常用于读面向行的格式化文件

    */

    public static void readFileByLines(String fileName) {

    File file = new File(fileName);

    BufferedReader reader = null;

    try {

    System.out.println("以行为单位读取文件内容,一次读一整行:");

    reader = new BufferedReader(new FileReader(file));

    String tempString = null;

    int line = 1;

    // 一次读入一行,直到读入null为文件结束

    while ((tempString = reader.readLine()) != null) {

    // 显示行号

    System.out.println("line " + line + ": " + tempString);

    line++;

    }

    reader.close();

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (reader != null) {

    try {

    reader.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 随机读取文件内容

    */

    public static void readFileByRandomAccess(String fileName) {

    RandomAccessFile randomFile = null;

    try {

    System.out.println("随机读取一段文件内容:");

    // 打开一个随机访问文件流,按只读方式

    randomFile = new RandomAccessFile(fileName, "r");

    // 文件长度,字节数

    long fileLength = randomFile.length();

    // 读文件的起始位置

    int beginIndex = (fileLength > 4) ? 4 : 0;

    // 将读文件的开始位置移到beginIndex位置。

    randomFile.seek(beginIndex);

    byte[] bytes = new byte[10];

    int byteread = 0;

    // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

    // 将一次读取的字节数赋给byteread

    while ((byteread = randomFile.read(bytes)) != -1) {

    System.out.write(bytes, 0, byteread);

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (randomFile != null) {

    try {

    randomFile.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 显示输入流中还剩的字节数

    */

    private static void showAvailableBytes(InputStream in) {

    try {

    System.out.println("当前字节输入流中的字节数为:" + in.available());

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    public static void main(String[] args) {

    String fileName = "C:/temp/newTemp.txt";

    ReadFromFile.readFileByBytes(fileName);

    ReadFromFile.readFileByChars(fileName);

    ReadFromFile.readFileByLines(fileName);

    ReadFromFile.readFileByRandomAccess(fileName);

    }

    }

    将内容追加到文件尾部

    public class AppendToFile {

    /**

    * A方法追加文件:使用RandomAccessFile

    */

    public static void appendMethodA(String fileName, String content) {

    try {

    // 打开一个随机访问文件流,按读写方式

    RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");

    // 文件长度,字节数

    long fileLength = randomFile.length();

    //将写文件指针移到文件尾。

    randomFile.seek(fileLength);

    randomFile.writeBytes(content);

    randomFile.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    /**

    * B方法追加文件:使用FileWriter

    */

    public static void appendMethodB(String fileName, String content) {

    try {

    //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

    FileWriter writer = new FileWriter(fileName, true);

    writer.write(content);

    writer.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    public static void main(String[] args) {

    String fileName = "C:/temp/newTemp.txt";

    String content = "new append!";

    //按方法A追加文件

    AppendToFile.appendMethodA(fileName, content);

    AppendToFile.appendMethodA(fileName, "append end. \n");

    //显示文件内容

    ReadFromFile.readFileByLines(fileName);

    //按方法B追加文件

    AppendToFile.appendMethodB(fileName, content);

    AppendToFile.appendMethodB(fileName, "append end. \n");

    //显示文件内容

    ReadFromFile.readFileByLines(fileName);

    }

    }

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    展开全文
  • I have a xml file located in D:\XML\RequestXML and I am reading xml file in this folder from a FileReader. In my program I hard coded the file path /XML/Request... This works fine with the windows e...

    I have a xml file located in D:\XML\RequestXML and I am reading xml file in this folder from a FileReader. In my program I hard coded the file path /XML/RequestXML/. This works fine with the windows environment. In windows JBoss is in D:\jbossdistrib\jboss.

    I created the folder structure in linux /usr/XML/RequestXML/. And add the xml in to RequestXML folder. JBoss is in /usr/jbossdistrib/jboss/ path.

    But my application can not find the file specified in /XML/RequestXML/ in linux environment.

    If I change the file path as /usr/XML/RequestXML/ it works in linux.

    How can I use the consistent file path in linux and windows both?

    public class Controller extends HttpServlet {

    private String filePath = "/XML/RequestXML/";

    protected void doPost(HttpServletRequest request,

    HttpServletResponse response) throws ServletException, IOException {

    String file = request.getParameter("fileName");

    xml = readFile(filePath + file);

    }

    private String readFile(String file) {

    StringBuffer fileData = new StringBuffer();

    try {

    BufferedReader reader = new BufferedReader(new FileReader(file));

    char[] buf = new char[1024];

    int numRead=0;

    while((numRead=reader.read(buf)) != -1){

    String readData = String.valueOf(buf, 0, numRead);

    fileData.append(readData);

    buf = new char[1024];

    }

    reader.close();

    }

    catch (FileNotFoundException e) {

    logger.fatal("File not found in specifid path "+ file);

    }

    catch (IOException e) {

    logger.fatal("Error while reading the xml file");

    }

    return fileData.toString();

    }

    }

    Update

    My question is how to set the file path without /usr/ which works fine in Windows.

    If this is not possible, then do I need to use the path as /usr/XML/RequestXML/ in windows environment as well? so I have to create a folder structure like D:\usr\XML\RequestXML in windows.

    解决方案

    If you know the current working directory (test it with:

    System.out.println(new File(".").getAbsolutePath());

    you can hardcode a relative directory like ../../XML/RequestXML

    For the record: although this may help, I still believe you should try to solve this with a configuration parameter or by loading it as a resource available in the classpath.

    展开全文
  • 来看看代码的演进一开始是写在windows系统中的盘符下,考虑到linux系统无盘符,但windows又没有root,只能存入内存中了,二者可兼得,这也实现java的跨平台的特点。try{OutputStream out = new FileOutputStream(...

    来看看代码的演进

    一开始是写在windows系统中的盘符下,考虑到linux系统无盘符,但windows又没有root,只能存入内存中了,二者可兼得,这也实现了java的跨平台的特点。

    try{

    OutputStream out = new FileOutputStream("E:\\a.txt");

    ObjectOutputStream oos = new ObjectOutputStream(out);

    oos.writeObject(this);

    oos.close();

    InputStream in = new FileInputStream("E:\\a.txt");

    ObjectInputStream ois = new ObjectInputStream(in);

    Object clone = ois.readObject();

    ois.close();

    retrue clone;

    }catch(Exception e){

    throw new RuntimeException(e);

    }

    演进后,如下:

    try{

    ByteArrayOutputStream out = new ByteArrayOutputStream(); //这里使用写入内存的流

    ObjectOutputStream oos = new ObjectOutputStream(out);

    oos.writeObject(this);

    oos.close();

    //从内存中取出数据

    byte[] bt = out.toByteArray(); //将内存中的字节取出来

    InputStream in = new ByteArrayInputStream(bt);

    ObjectInputStream ois = new ObjectInputStream(in);

    Object clone = ois.readObject();

    ois.close();

    retrue clone;

    }catch(Exception e){

    throw new RuntimeException(e);

    }

    展开全文
  • Java文件读取

    2021-02-28 11:56:45
    1、按字节读取2、按字符读取3、按行读取文4、随机读取importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileReader;importjava.io.IOException;importjava.io....

    1、按字节读取

    2、按字符读取

    3、按行读取文

    4、随机读取import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.RandomAccessFile;

    import java.io.Reader;

    public class ReadFromFile {

    /**

    * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。

    */

    public static void readFileByBytes(String fileName) {

    File file = new File(fileName);

    InputStream in = null;

    try {

    System.out.println("以字节为单位读取文件内容,一次读一个字节:");

    // 一次读一个字节

    in = new FileInputStream(file);

    int tempbyte;

    while ((tempbyte = in.read()) != -1) {

    System.out.write(tempbyte);

    }

    in.close();

    } catch (IOException e) {

    e.printStackTrace();

    return;

    }

    try {

    System.out.println("以字节为单位读取文件内容,一次读多个字节:");

    // 一次读多个字节

    byte[] tempbytes = new byte[100];

    int byteread = 0;

    in = new FileInputStream(fileName);

    ReadFromFile.showAvailableBytes(in);

    // 读入多个字节到字节数组中,byteread为一次读入的字节数

    while ((byteread = in.read(tempbytes)) != -1) {

    System.out.write(tempbytes, 0, byteread);

    }

    } catch (Exception e1) {

    e1.printStackTrace();

    } finally {

    if (in != null) {

    try {

    in.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 以字符为单位读取文件,常用于读文本,数字等类型的文件

    */

    public static void readFileByChars(String fileName) {

    File file = new File(fileName);

    Reader reader = null;

    try {

    System.out.println("以字符为单位读取文件内容,一次读一个字节:");

    // 一次读一个字符

    reader = new InputStreamReader(new FileInputStream(file));

    int tempchar;

    while ((tempchar = reader.read()) != -1) {

    // 对于windows下,\r\n这两个字符在一起时,表示一个换行。

    // 但如果这两个字符分开显示时,会换两次行。

    // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

    if (((char) tempchar) != '\r') {

    System.out.print((char) tempchar);

    }

    }

    reader.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    try {

    System.out.println("以字符为单位读取文件内容,一次读多个字节:");

    // 一次读多个字符

    char[] tempchars = new char[30];

    int charread = 0;

    reader = new InputStreamReader(new FileInputStream(fileName));

    // 读入多个字符到字符数组中,charread为一次读取字符数

    while ((charread = reader.read(tempchars)) != -1) {

    // 同样屏蔽掉\r不显示

    if ((charread == tempchars.length)

    && (tempchars[tempchars.length - 1] != '\r')) {

    System.out.print(tempchars);

    } else {

    for (int i = 0; i 

    if (tempchars[i] == '\r') {

    continue;

    } else {

    System.out.print(tempchars[i]);

    }

    }

    }

    }

    } catch (Exception e1) {

    e1.printStackTrace();

    } finally {

    if (reader != null) {

    try {

    reader.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 以行为单位读取文件,常用于读面向行的格式化文件

    */

    public static void readFileByLines(String fileName) {

    File file = new File(fileName);

    BufferedReader reader = null;

    try {

    System.out.println("以行为单位读取文件内容,一次读一整行:");

    //中文乱码处理,UTF-8与GB2312

    //reader = new BufferedReader(new FileReader(file));

    InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GB2312");

    reader = new BufferedReader(isr);

    String tempString = null;

    int line = 1;

    // 一次读入一行,直到读入null为文件结束

    while ((tempString = reader.readLine()) != null) {

    // 显示行号

    System.out.println("line " + line + ": " + tempString);

    line++;

    }

    reader.close();

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (reader != null) {

    try {

    reader.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 随机读取文件内容

    */

    public static void readFileByRandomAccess(String fileName) {

    RandomAccessFile randomFile = null;

    try {

    System.out.println("随机读取一段文件内容:");

    // 打开一个随机访问文件流,按只读方式

    randomFile = new RandomAccessFile(fileName, "r");

    // 文件长度,字节数

    long fileLength = randomFile.length();

    // 读文件的起始位置

    int beginIndex = (fileLength > 4) ? 4 : 0;

    // 将读文件的开始位置移到beginIndex位置。

    randomFile.seek(beginIndex);

    byte[] bytes = new byte[10];

    int byteread = 0;

    // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

    // 将一次读取的字节数赋给byteread

    while ((byteread = randomFile.read(bytes)) != -1) {

    System.out.write(bytes, 0, byteread);

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (randomFile != null) {

    try {

    randomFile.close();

    } catch (IOException e1) {

    }

    }

    }

    }

    /**

    * 显示输入流中还剩的字节数

    */

    private static void showAvailableBytes(InputStream in) {

    try {

    System.out.println("当前字节输入流中的字节数为:" + in.available());

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    public static void main(String[] args) {

    String fileName = "C:/temp/newTemp.txt";

    ReadFromFile.readFileByBytes(fileName);

    ReadFromFile.readFileByChars(fileName);

    ReadFromFile.readFileByLines(fileName);

    ReadFromFile.readFileByRandomAccess(fileName);

    }

    }

    String strPath = "D:/java/apache-tomcat-7.0.40/RUNNING.txt";

    ReadFromFile.readFileByBytes(strPath);

    来自网上某位好心人。

    展开全文
  • Java读取文件方法汇总

    2021-03-13 00:16:31
    本文实例为大家分享了Java读取文件的方法,供大家参考,具体内容如下1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容public class ReadFromFile {/*** 以字节为单位读取文件,常...
  • java实现分段读取文件并通过HTTP上传的方法本文实例讲述了java实现分段读取文件并通过HTTP上传的方法。分享给大家供大家参考。具体如下:1、首先将文件分段,用RandomAccessFile2、分段后将分出的内容上传到...
  • java文件如何读取

    2021-03-06 01:29:23
    1、按字32313133353236313431303231363533e4b893e5b19e31333264623137节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容Java代码1. import java.io.BufferedReader;2. import java.io....
  • java读取excel文件

    2021-03-03 11:54:29
    1. 在网上查找相关文件,最多的答案就是使用 HSSFWorkbook 进行读取:POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));HSSFWorkbook workbook = new HSSFWork...
  • 读取java文件

    千次阅读 2020-12-18 18:12:34
    JAVA通信编程(二)——如何读取java的properties配置文件(插播)如何读取java的properties配置文件本不属于java通讯编程这个系列的范畴,但是在做一些应用中编写通讯编程需要读取一些通讯参数,这样可以使程序更加的...
  • 关于java读取LINUX目录、文件读取windows共享文件夹的详细方法 最近因为公司需求,需要java读取windows上的设备共享文件夹,但是最后代码需要放在linux上面。所以出现了在windows上面开发的代码不生效的问题。最后...
  • 1 importjava.io.BufferedReader;2 importjava.io.File;3 importjava.io.FileInputStream;4 importjava.io.FileReader;5 importjava.io.IOException;6 importjava.io.InputStream;7 importjava.io.InputStreamReader...
  • 如下的程序,将一个行数为fileLines的文本文件平均分为splitNum个小文本文件,其中换行符'r'是linux上的,windowsjava换行符是'\r\n':package kddcup2012.task2.FileSystem;import java.io.BufferedInputStream;...
  • spring读取windows路径的配置文件

    千次阅读 2021-02-12 20:56:38
    发布到服务器上其实容易实现,因为linux文件的路径直接在web应用中输入就行了。但是之前我需要现在windows本地部署测试,也就是说需要将配置文件放到windows目录下面。先看我代码中读取配置文件的地方。public ...
  • java读取ftp服务器文件

    2021-08-11 06:22:25
    java读取ftp服务器文件 内容精选换一换Weblogic基于JAVAEE架构的中间件,Weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的...
  • 发现在javajava编码与txt编码对应 java txt unicode unicode big endian utf-8 utf-8 utf-16 unicode gb2312 ANSI java读取txt文件,如果编码格式不匹配,就会出现乱码现象。所以读取txt文件的时候需要设置读取...
  • 这篇文章主要介绍了Java 读取文件方法大全,需要的朋友可以参考下1、按字节读取文件内容public class ReadFromFile {public static void readFileByBytes(String fileName) {File file = new File(fileName);...
  • 需要引入的jar包jcifs-1.3.18.jarpublic static void main(String[] args) throws Exception {String user = "共享windows的用户名";String pass = "共享windows的密码";我的共享目录为//100.100.11.19//myshare//...
  • /*** 下载pdf文件*/publicString downLoadPdf(String url,String contNo,String localPdfName){String newUrl="";String pathUrl="172.18.100.165"; //FTP服务器hostnameint port=21;//FTP服务器端口String username...
  • java 文件读取写入

    2021-03-11 14:25:59
    public class ReadFromFile {/*** 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。*/public static void readFileByBytes(String fileName) {File file = new File(fileName);InputStream in...
  • 功能:读取远程linux服务器上指定目录下的文件内容。已知:服务器IP、端口号、用户名、密码、路径、文件名。我使用的是ssh2方式,建立连接,然后只能做到上传或者取文件,代码如下:Connection con = new Connection...
  • Java实现文件上传详解

    2021-11-13 09:36:15
    文件上传的原理 你如果要去一个网站,如果发一个请求或文件下载, 电脑为客户端, 服务器为s端,服务器中有网站,web应用,还有文件操作系统File System IO流,两个池子或许穿东西需要一条管道,两台不同电脑之间的...
  • java读取文件方法总结

    2021-02-26 09:47:01
    这样问题来了,就是如何能够遍历已经获取到特定的map中就是一个问题,在网上找了一些资料,找到了一个很全面的java遍历文件的文章,在这里转载引用。文章参考:...
  • Java 读写Properties配置文件Java 读写Properties配置文件1.Properties类与Properties配置文件Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方...
  • 为什么Linux系统默认使用utf8编码?国际惯例,计算机是歪果仁搞出来的因为utf8是国际编码,GBK才是中文编码,...Linux对非UTF-8支持很弱,这个在Windows上也一样,如果查看软件没有自动检测编码的功能,看Linux 或...
  • 使用Java读取远程文件

    2021-07-16 20:00:38
    I am looking for an easy way to get files that are situated on a remote ... For this I created a local ftp server on my Windows XP, and now I am trying to give my test applet the following address...
  • JAVA读取服务器端文件

    千次阅读 2021-03-03 12:03:05
    JAVA读取服务器端文件一、实验要求创建一个URL对象,然后让URL对象返回输入流,通过该输入流读取URL所包含的资源文件。二、实验内容1、开机后,创建目录C:\Users\lenovo\eclipse-workspace。把这个目录作为我们的...
  • java读取服务器文件

    2021-08-10 01:17:38
    java读取服务器文件[2021-02-01 10:47:24]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,876
精华内容 62,750
关键字:

java实现windows文件的读取

java 订阅