原因以及解决方法:

核心方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) throws Exception{

FileReader fr=new FileReader("test.txt");
FileWriter fw=new FileWriter("test2.txt");

/*
int b=0;
while(b!=-1){
b=fr.read();
System.out.print("-"+(char)b);
fw.write(b);
}
用这种方法会比下面的方法在最后的文本后面多出一个乱码'?'
因为当读取到最后一个字符时,b此时还不等于-1,判断后会接着读取
下一个字符,但在上一次读取时已读取到最后一个字符,所以这次
就什么都读取不到(产生乱码),并返回-1,结束循环
*/

int b;
while((b=fr.read())!=-1){

System.out.print("-"+(char)b);
fw.write(b);
      //这个方法的优点在于它会在读取的同时判断是否执行方法体
}
fr.close();
fw.close();
}

手动敲一遍、算是加强记忆吧~

/:文件系统的入口,也是最高一级的目录

/bin:最基本的且着急用户和普通用户都可以使用的命令放在此目录下,如:ls、cp等

/boot:存放Linux的内核及引导系统所需要的文件,包括引导装载程序

/etc:存放系统配置文件,一些服务器的配置文件也放在这里

/dev:存放所有的设备文件,比如声卡、磁盘等

/home:包含普通用户的个人主目录,如/home/lisi

/lib:包含二进制文件的共享库

/media:即插即用型存储设备如U盘、光盘等的自动挂载点在此目录下创建

/mnt:用于存放临时性挂在存储设备,如光驱可挂载到/met/cdrom下

阅读全文 »

为什么要使用startActivityForResult

大家都知道startActivity()是用来切换跳转Activity的,如果想要在另个Activity中出书数据的话,只需要在源activity中使用intent.putExtra()方法传出数据,在对应activity中使用intent.get**Extra()方法接收数据就行了

那么startActivityForResult()方法呢,它也是用来带数据跳转activity的,可是这两个方法具体有什么区别呢?
这就要说说带数据跳转的方向了,

第一个方法只能把数据发送过去,可是如果子activity需要再传送回一些数据呢?
你可能会说,在子activity中使用intent.putExtra()方法把数据写入,在父activity中写入get*方法就行了嘛,

可是,这个父activity中的get方法要写在哪儿呢?写在onCreate方法中?

那么问题就来了,如果你在父activity中的onCreate方法中写入了get*方法来读取(获得)数据,

那么就意味着你一启动父activity就会执行get*方法(因为第一个执行的方法就是onCreate),而父activity是主方法,它必定是程序第一个执行的activity,

也就是说,此时还没有执行子activity,也就没有数据通过intent传过来,所以在执行onCreate时,执行到get*方法时就会读不到任何数据,

而且还会在每次启动activity时,不管需不需要从子activity接受数据都多此一举的执行一遍get*方法,来获取数据,

这样虽然可以实现从子activity中得到返回的数据,但却是不理想的,不正确的

阅读全文 »

虽然有eclipse等强大的IDE工具、但有时不可避免的需要用命令行来手动编译和执行java程序、
最近我就碰到的这样的问题、突然感觉编译和执行时都要敲一遍java或class文件的名字、这样好麻烦、

碰巧刚刚学习了下dos系统和批处理、所以就想自己写一个批处理.bat、来省事点、
虽然不复杂、但初次写批处理还是被某些问题难住了、不过黄天不负有心人、最终还是写出来了:

把下面的两段代码分别复制、打开记事本、粘贴进去、保存为后缀为:”.bat”的文件、

然后把这两个.bat文件随意放在电脑上的任何地方、比如桌面上(建议放在桌面上)、
以后需要手动编译和执行 java时、先把选中的java文件拖到MyJavac.bat文件上、

这里假设我将第一段代码保存为了MyJavac.bat文件,下同MyJava.bat、
就会自动编译生成class文件到java文件所在目录了、

然后再选中需要执行的class文件将其拖到MyJava.bat文件上、就会批量执行了、

这两个小程序都是最多支持9个java或class文件同时编译和执行、

本来打算将编译和执行和在一起呢、但是想了想、还是这样分开比较好、

下面是代码:

批量编译MyJavac:

1
2
3
4
5
@echo off
echo.
for %%i in (%1 %2 %3 %4 %5 %6 %7 %8 %9) do (%%~di && cd %%~dpi && javac %%i && if %errorlevel%==0 echo %%~nxi编译完成 )
echo.
pause

阅读全文 »

“this”是指(或者说:所代表的是)当前这段代码所在的类的对象,
而”类名.this”是指”类名”的对象(一般在匿名类或内部类中使用来调用外部类的方法或属性)

例:

1
2
3
4
5
6
7
8
9
10
11
class A {
public void method(){
A.this //这里的"A.this"就是表示类"A"的对象,在这种情况下"A.this"和"this"是一样的
}

class B { //"class A"中的一个内部类"B"(内部类也可以是使用关键字"new" 所新实例出来的一个匿名类或者接口,比如"new OnClickListener()")
void method1() {
A.this //这里的"A.this"还是表示类"A"的对象。。但是这里是在内部类里面。。所以这里如果使用的是"this"那就是内部类B的对象了。。但是我们经常会在内部类里面调用外部的东西。。所以就用"A.this"这种方式就行了
}
}
}

本博客是使用hexo(一个静态网站生成框架)和github pages搭建的一个博客系统
主题使用的是: next

过一段时间就会把在csdn的一些文章迁移过来

测试图片:
test