Java/File Input Output/FileWriter

Материал из Java эксперт
Перейти к: навигация, поиск

BufferedWriter out of FileWriter

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class BufferedCopy {

 public static void main(String[] args) throws IOException {
   BufferedReader inputStream = null;
   BufferedWriter outputStream = null;
   try {
     inputStream = new BufferedReader(new FileReader("xanadu.txt"));
     outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
     int c;
     while ((c = inputStream.read()) != -1) {
       outputStream.write(c);
     }
   } finally {
     if (inputStream != null) {
       inputStream.close();
     }
     if (outputStream != null) {
       outputStream.close();
     }
   }
 }

}

</source>
   
  
 
  



Copy Characters between FileReader and FileWriter

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyCharacters {

 public static void main(String[] args) throws IOException {
   FileReader inputStream = null;
   FileWriter outputStream = null;
   try {
     inputStream = new FileReader("xanadu.txt");
     outputStream = new FileWriter("characteroutput.txt");
     int c;
     while ((c = inputStream.read()) != -1) {
       outputStream.write(c);
     }
   } finally {
     if (inputStream != null) {
       inputStream.close();
     }
     if (outputStream != null) {
       outputStream.close();
     }
   }
 }

}

</source>
   
  
 
  



Copy file character by character with FileReader and FileWriter

   <source lang="java">

import java.io.FileReader; import java.io.FileWriter; class FileCopy {

 public static void main(String args[]) throws Exception {
   FileReader fr = new FileReader(args[0]);
   // Create a file writer
   FileWriter fw = new FileWriter(args[1]);
   // Read and copy characters
   int i;
   while ((i = fr.read()) != -1) {
     fw.write(i);
   }
   fw.close();
   fr.close();
 }

}

</source>
   
  
 
  



extends FilterWriter and extends FilterReader

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in the
*     documentation and/or other materials provided with the distribution.
*
*   - Neither the name of Sun Microsystems nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import java.io.FileReader; import java.io.FileWriter; import java.io.FilterReader; import java.io.FilterWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; public class CounterDemo {

 public static void main(String[] args) throws IOException {
   CountReader cr = new CountReader(new FileReader("xanadu.txt"), "e");
   CountWriter cw = new CountWriter(new FileWriter("outagain.txt"), "e");
   int c = 0;
   while ((c = cr.read()) != -1) {
     cw.write(c);
   }
   System.out.println(cr.getCount());
   System.out.println(cw.getCount());
   cr.close();
   cw.close();
 }

} /*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*  - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*  - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*  - Neither the name of Sun Microsystems nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

class CountWriter extends FilterWriter {

 private int count = 0;
 private char lookFor = 0;
 public CountWriter(Writer in, char lookFor) {
   super(in);
   this.lookFor = lookFor;
 }
 public void write(int character) throws IOException {
   super.write(character);
   if ((char) character == lookFor) {
     count++;
   }
 }
 public void write(char[] cbuf) throws IOException {
   super.write(cbuf);
   int length = cbuf.length;
   for (int i = 0; i < length; i++) {
     if (cbuf[i] == lookFor) {
       count++;
     }
   }
 }
 public void write(char[] cbuf, int off, int len) throws IOException {
   super.write(cbuf, off, len);
   int length = cbuf.length;
   for (int i = 0; i < length; i++) {
     if (cbuf[i] == lookFor) {
       count++;
     }
   }
 }
 public void write(String str) throws IOException {
   super.write(str);
   int length = str.length();
   for (int i = 0; i < length; i++) {
     if (str.charAt(i) == lookFor) {
       count++;
     }
   }
 }
 public void write(String str, int off, int len) throws IOException {
   super.write(str, off, len);
   int length = str.length();
   for (int i = 0; i < length; i++) {
     if (str.charAt(i) == lookFor) {
       count++;
     }
   }
 }
 public int getCount() {
   return count;
 }

} /*

* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*  - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*  - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*  - Neither the name of Sun Microsystems nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

class CountReader extends FilterReader {

 private int count = 0;
 private char lookFor = 0;
 public CountReader(Reader in, char lookFor) {
   super(in);
   this.lookFor = lookFor;
 }
 public int read() throws IOException {
   int character = super.read();
   if ((char) character == lookFor) {
     count++;
   }
   return character;
 }
 public int read(char[] cbuf) throws IOException {
   int numChars = super.read(cbuf);
   int length = cbuf.length;
   for (int i = 0; i < length; i++) {
     if (cbuf[i] == lookFor) {
       count++;
     }
   }
   return numChars;
 }
 public int read(char[] cbuf, int off, int len) throws IOException {
   int numChars = super.read(cbuf, off, len);
   int length = cbuf.length;
   for (int i = 0; i < length; i++) {
     if (cbuf[i] == lookFor) {
       count++;
     }
   }
   return numChars;
 }
 public void reset() throws IOException {
   super.reset();
   count = 0;
 }
 public boolean markSupported() {
   return false;
 }
 public void mark(int readAheadLimit) throws IOException {
   throw new IOException("CountReader does not support the mark() operation.");
 }
 public int getCount() {
   return count;
 }

}

</source>
   
  
 
  



Write string to file with FileWriter

   <source lang="java">

import java.io.FileWriter; class FileWriterDemo {

 public static void main(String args[]) throws Exception {
   FileWriter fw = new FileWriter(args[0]);
   // Write strings to the file
   for (int i = 0; i < 12; i++) {
     fw.write("Line " + i + "\n");
   }
   // Close file writer
   fw.close();
 }

}

</source>