扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import java.io.BufferedReader;
为潮安等地区用户提供了全套网页设计制作服务,及潮安网站建设行业解决方案。主营业务为做网站、成都网站设计、潮安网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class Test10 {
/**
* 复制当前的源程序到项目的根目录
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/*
* 1:读取原文件
* 2:项目标文件中写
* 3:使用缓冲流按行读写
*/
FileInputStream fis=new FileInputStream("src"+File.separator+"day01"+File.separator+"Test1.java");
//转化为字符输出流
InputStreamReader isr=new InputStreamReader(fis);
//按行为单位读取字符串
BufferedReader br=new BufferedReader(isr);
//
PrintWriter pw=new PrintWriter("Test1.java");
String line=null;
while((line=br.readLine())!=null){
pw.println(line);
}
pw.close();
br.close();
}
}
FIleInputStream读取的是字节,想要显示,通过Steing的构造方法new String(字节数组,0,读取多少个);字符读取出来的是字节码,是整形,你直接转换成字符,那他就会当成ascii码转换,所以是乱码,你可以这么去理解,你读取出来的字符是占2个字节的,而数字或字母是一个字节,当要读取中文的时候,他返回的是一个int的值,而这个值只是一个字节的ascii的值而已,但是中文是两个字节,他就只读取了这个中文的一半,所以你用这一半的ascii去转换成字符,当然是乱码了,但是读取的是字母或者数字的话,那么只占一个字节,当然读取出来的就是一个ascii码,所以转换出来还是同样的字符
import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class StreamTest {
public static void main(String[] args) {
StreamTest st = new StreamTest();
String writeStr = "Hello World!\r\n你好!";
String fileName = "outFile.txt";
st.OutputTest(fileName,writeStr);
st.InputTest(fileName);
}
//字节-读
private void InputTest(String fileName) {
File f = createFile(fileName);
FileInputStream fis;
byte[] b = new byte[100];
try {
System.out.println("创建输入流...");
fis = new FileInputStream(f);
System.out.println("创建输入流完成");
System.out.println("开始读取...");
fis.read(b);
System.out.println("读取完成");
String str = new String(b);
System.out.println("读取内容输出:\n"+str);
fis.close();
}catch(FileNotFoundException e) {
System.out.println("文件没有找到");
}catch(IOException e) {
System.out.println("读取失败");
}
}
//字节-写
private void OutputTest(String fileName,String text) {
File f = createFile(fileName);
FileOutputStream fos;
try{
System.out.println("创建输出流...");
fos = new FileOutputStream(f);
System.out.println("创建输出流完成");
byte[] testBArray = text.getBytes();
System.out.println("开始写数据...");
fos.write(testBArray);
fos.flush();
System.out.println("写数据完成");
fos.close();
}catch(FileNotFoundException e) {
System.out.println("文件没有找到");
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
//创建文件
private File createFile(String fileName) {
File f = new File(fileName);
if(!f.exists()) {
System.out.println("文件不存在");
try{
System.out.println("创建文件...");
f.createNewFile();
System.out.println("创建文件完成");
}catch(IOException e) {
System.out.println("文件创建失败");
e.printStackTrace();
}
}else {
System.out.println("文件已经存在");
}
return f;
}
}
字符流的话改成FileWriter(),FileReader()就好啦!
不懂加:百度HI!^0^
这些是流之间的转换,就是把 ByteArrayOutputStream baos输出流
转换成DataOutputStream dos输出流
b 表示存贮的字符数组
(0,len)表示读取整个文件的大小
dos.write(b,0.len)表示读取整个文件,写入到数组b中
代码如下,运行下,是否符合你的要求:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class Test
{
public static void main(String[] args) throws Exception
{
Scanner scan = new Scanner(System.in);
DataOutputStream dos = new DataOutputStream(new FileOutputStream("1.txt"));
//从键盘上输入10个整数,判断哪些是偶数,把所有偶数写到一个文件中去
String content = "";
for(int i=0;i10;i++)
{
System.out.println("请输入第" + (i+1) + "个数");
int num = scan.nextInt();
if(num %2 == 0) content += num + ",";
}
dos.writeUTF(content);
scan.close();
//从文件中读出这些偶数,显示在屏幕上
DataInputStream dis = new DataInputStream(new FileInputStream("1.txt"));
try
{
content = dis.readUTF();
System.out.println(content);
} catch (Exception e)
{
e.printStackTrace();
}
dis.close();
}
}
这里以字节流FileInputStream,FileOutputStream为例。代码例子如下:
import java.io.File;
/**
* 把一个文件夹中的文件复制到一个指定的文件夹
* @author young
*
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
/* 指定源exe文件的存放路径 */
String str = "f:/jdk-1_5_0_06-windows-i586-p.exe";
/* 指定复制后的exe的目标路径 */
String strs = "e:/copy.exe";
/* 创建输入和输出流 */
FileInputStream fis = null;
FileOutputStream fos = null;
try {
/* 将io流和文件关联 */
fis = new FileInputStream(str);
fos = new FileOutputStream(strs);
byte[] buf = new byte[1024 * 1024];
int len;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流