Java文字ストリームリーダライタ
リーダー文字入力ストリーム
ライター文字出力ストリームは、
読み取りおよび書き込みデータの形で文字に捧げ
ステップ1:ファイルを読むために文字ストリームを使用します
FileReaderのは例FileReaderのファイルを読むためのリーダーのサブクラスです。
package stream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class TestStream {
public static void main(String[] args) {
// 准备文件lol.txt其中的内容是AB
File f = new File("d:/lol.txt");
// 创建基于文件的Reader
try (FileReader fr = new FileReader(f)) {
// 创建字符数组,其长度就是文件的长度
char[] all = new char[(int) f.length()];
// 以字符流的形式读取文件所有内容
fr.read(all);
for (char b : all) {
// 打印出来是A B
System.out.println(b);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ステップ2:文字列を使用しますが、ストリームファイルに書き込まれます
ライターてFileWriterは、文字列をファイルに書き込みます例てFileWriterのサブクラスであります
package stream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class TestStream {
public static void main(String[] args) {
// 准备文件lol2.txt
File f = new File("d:/lol2.txt");
// 创建基于文件的Writer
try (FileWriter fr = new FileWriter(f)) {
// 以字符流的形式把数据写入到文件中
String data="abcdefg1234567890";
char[] cs = data.toCharArray();
fr.write(cs);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
運動:ファイルの暗号化
準備テキストファイル ASCII文字と漢字が含まれている(非バイナリ)を、。
設計法
public static void encodeFile(File encodingFile, File encodedFile);
この方法ではencodingFileは、内容を暗号化し、その後、encodedFileにファイルを保存します。
暗号化アルゴリズム:
デジタル:
数は、6 5へように、元の基礎に1を加え、9ない場合、3は4となる
番号9た場合、0となる
アルファベット文字:
文字は非Z、右方向である場合そのようなEにDとして、G Hに
Z場合、Z-> A、ZA。
文字は敏感維持する必要があります
:英数字以外の文字を
、例えば「&^は、中国でも変わらない、変わりません
回答:
package stream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestStream {
/**
*
* @param encodingFile
* 被加密的文件
* @param encodedFile
* 加密后保存的位置
*/
public static void encodeFile(File encodingFile, File encodedFile) {
try (FileReader fr = new FileReader(encodingFile); FileWriter fw = new FileWriter(encodedFile)) {
// 读取源文件
char[] fileContent = new char[(int) encodingFile.length()];
fr.read(fileContent);
System.out.println("加密前的内容:");
System.out.println(new String(fileContent));
// 进行加密
encode(fileContent);
// 把加密后的内容保存到目标文件
System.out.println("加密后的内容:");
System.out.println(new String(fileContent));
fw.write(fileContent);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void encode(char[] fileContent) {
for (int i = 0; i < fileContent.length; i++) {
char c = fileContent[i];
if (isLetterOrDigit(c)) {
switch (c) {
case '9':
c = '0';
break;
case 'z':
c = 'a';
break;
case 'Z':
c = 'A';
break;
default:
c++;
break;
}
}
fileContent[i] = c;
}
}
public static boolean isLetterOrDigit(char c) {
// 不使用Character类的isLetterOrDigit方法是因为,中文也会被判断为字母
String letterOrDigital = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return -1 == letterOrDigital.indexOf(c) ? false : true;
}
public static void main(String[] args) {
File encodingFile = new File("E:/project/j2se/src/Test1.txt");
File encodedFile = new File("E:/project/j2se/src/Test2.txt");
encodeFile(encodingFile, encodedFile);
}
}