java源代码
package com.yw.test02;
import java.io.FileReader;
import java.io.PrintWriter;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
public class CSVTest {
public static void main(String[] args) {
CSVTest t1=new CSVTest();
try {
t1.write();
t1.read();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void write() throws Exception {
Appendable out = new PrintWriter("file.csv");
CSVPrinter printer = CSVFormat.DEFAULT.withHeader("userId", "userName").print(out);
for (int i = 0; i < 10; i++) {
printer.printRecord("userId" + i, "userName" + i);
}
printer.flush();
printer.close();
}
public void read() throws Exception {
FileReader reader = new FileReader("file.csv");
CSVParser parser = CSVFormat.DEFAULT.withHeader("userId", "userName").parse(reader);
for (CSVRecord record : parser) {
System.out.println(record.get("userId") + ":" + record.get("userName"));
}
reader.close();
}
}
javac命令
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名
java命令
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server,
因为您是在服务器类计算机上运行。
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<选项>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
javac ,java示例
javac -cp lib/commons-csv-1.7.jar src/com/yw/test02/*.java -d bin
java -cp ./lib/commons-csv-1.7.jar:./bin com.yw.test02.CSVTest
jar命令
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。
示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并
将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
jar cvfm classes.jar mymanifest -C foo/ .
jar使用范例:
(1)创建jar包
$ jar cf hello.jar hello 利用hello目录生成hello.jar包,如hello.jar存在,则覆盖
(2)创建并显示打包过程
$ jar cvf hello.jar hello 利用hello目录创建hello.jar包,并显示创建过程
(3)显示jar包
$ jar tvf hello.jar 查看hello.jar包的内容
指定的jar包必须真实存在,否则会发生FileNoutFoundException。
(4)解压jar包
$ jar xvf hello.jar 解压hello.jar至当前目录
(5)jar中添加文件
$ jar uf hello.jar HelloWorld.java 将HelloWorld.java添加到hello.jar包中
(6)创建不压缩内容jar包
$ jar cvf0 hello.jar *.class 利用当前目录中所有的.class文件生成一个不压缩jar包
(7)创建带manifest.mf文件的jar包
$ jar cvfm hello.jar manifest.mf hello
创建的jar包多了一个META-INF目录,META-INF止录下多了一个manifest.mf文件,至于manifest.mf的作用,后面会提到.
(8)忽略manifest.mf文件
$ jar cvfM hello.jar hello 生成的jar包中不包括META-INF目录及manifest.mf文件
(9)加-C应用:
$ jar cvfm hello.jar mymanifest.mf -C hello/
表示在切换到hello目录下然后再执行jar命令
Manifest.mf文件编写规则:
manifest.mf的编写一定要注意一些细节,它是很苛刻的,
我在此也载过不少跟头,谁让它这么小气呢,没办法,所以专门给大家列出来。
-
(1) 不能有空行和空格的地方
第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,第行的行尾不可以有空格
-
(2) 一定要有空行的地方
最后一行得是空行(在输完你的内容后加一个回车就OK)
-
(3) 一定有空格的地方
key: value 在分号后面一定要写写一个空格
cd bin
ywdeMacBook-Air:bin yw$ jar -cfe ywproject.jar com.yw.test02.CSVTest com/yw/test02
jar -xvf ywproject.jar
ywdeMacBook-Air:bin yw$ jar -xvf ywproject.jar
已创建: META-INF/
已解压: META-INF/MANIFEST.MF
已创建: com/yw/test02/
已解压: com/yw/test02/CSVTest.class
ywdeMacBook-Air:META-INF yw$ cat MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_212 (Oracle Corporation)
Main-Class: com.yw.test02.CSVTest
ywdeMacBook-Air:META-INF yw$ vi MANIFEST.MF
ywdeMacBook-Air:META-INF yw$ cat MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_212 (Oracle Corporation)
Main-Class: com.yw.test02.CSVTest
Class-Path: lib/commons-csv-1.7.jar
cp aaa/META-INF/MANIFEST.MF ./
jar cvfm aa.jar ./MANIFEST.MF -C aaa/ .
ywdeMacBook-Air:20190927 yw$ java -jar aa.jar
userId:userName
userId0:userName0
userId1:userName1
userId2:userName2
userId3:userName3
userId4:userName4
userId5:userName5
userId6:userName6
tree ./
./
└── 20190927
├── 20190927project.jar
├── MANIFEST.MF
├── aaa
│ ├── META-INF
│ │ └── MANIFEST.MF
│ └── com
│ └── banyuan
│ └── test01
│ └── CSVTest.class
├── aa.jar
├── bin
│ ├── 20190927project.jar
│ └── com
│ └── banyuan
│ └── test01
│ └── CSVTest.class
├── file.csv
├── lib
│ └── commons-csv-1.7.jar
└── src
└── com
└── banyuan
└── test01
└── CSVTest.java