# 每日心得
# 2018年4月16日
今日新增加的Python题库里又有关于读取CSV文件的题目。目前对文件读写并不熟悉,因此归纳整理了Python和Java读取CSV文件的方法。
Python:
(法一)通过csv库
import csv
def read(filepath):
with open(filepath) as csvfile:
readcsv = csv.reader(csvfile, delimiter = ',')
for row in readcsv:
// do something
(法二)通用方法(格式为.txt时)
def read(filepath):
file = open(filepath, "r")
for line in file:
// do something
Java:(实际为.txt格式)
public static void printCSVFile(String filePath) {
try {
FileInputStream f = new FileInputStream(filePath);
InputStreamReader it = new InputStreamReader(f);
BufferedReader reader = new BufferedReader(it);
String line = null;
while ((line = reader.readLine()) != null) {
String item[] = line.split(",");
// do something
}
reader.close();
it.close();
f.close();
} catch (IOException e) {
e.printStackTrace();
}
}
另外,今天的Android学习也涉及到文件。
文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据。
——摘自郭霖《第一行代码——Android》(第2版)第197页
主要是利用 openFileOutput() 和 openFileInput() 两种方法,示例代码如下:
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class MainActivity extends AppCompatActivity {
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
String inputText = load();
if (!TextUtils.isEmpty(inputText)) {
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
String inputText = edit.getText().toString();
save(inputText);
}
public void save(String inputText) {
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
}
注:此代码根据郭霖《第一行代码——Android》(第2版)6.2节内容整合。
在 onDestroy() 中实现文件的存储,而在 onCreate() 中检查并加载文件内容。
今天还学习了部分SharedPreferences存储的知识,待以后整理。
# End