C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据
练习8.1:编写函数。接受一个istream&参数,返回值类型也是istream&。此函数必须从给定流中读取数据,直至遇到文件结束标识时停止。
- #include <iostream>
- #include <stdexcept>
- using std::istream;
- using std::cin;
- using std::cout;
- using std::cerr;
- using std::endl;
- using std::runtime_error;
- istream &f(istream &in)
- {
- int v;
- while(in >> v, !in.eof())
- {
- if(in.bad())
- throw runtime_error("IO Stream error.");
- if(in.fail())
- {
- cerr<<"Data error! Please try again."<<endl;
- in.clear();
- in.ignore(100, '\n');
- continue;
- }
- cout<< v <<endl;
- }
- in.clear();
- return in;
- }
- int main()
- {
- cout<<"Please input some numbers, enter Ctrl+Z to end"<<endl;
- f(cin);
- return 0;
- }
练习8.3:什么情况下,下面的while循环会终止?
while (cin >> i) /*. . .*/
遇到文件结束符,或者遇到了IO流错误或者读入了无效数据。
练习8.4:编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::ifstream;
using std::cerr;
using std::vector; int main()
{
ifstream in("data.txt");
if(!in) {
cerr<<"Can't open the file."<<endl;
return -1;
} string line;
vector<string> words;
while(getline(in, line))
words.push_back(line); in.close(); vector<string>::const_iterator it = words.cbegin();
while (it != words.cend())
{
cout<< *it <<endl;
++it;
}
return 0;
}
练习8.5:重写上面的程序,将每个单词作为一个独立的元素进行存储。
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::ifstream;
using std::cerr;
using std::vector; int main()
{
ifstream in("data.txt");
if(!in) {
cerr<<"Can't open the file."<<endl;
return -1;
} string line;
vector<string> words;
while(in >> line)
words.push_back(line); in.close(); vector<string>::const_iterator it = words.cbegin();
while (it != words.cend())
{
cout<< *it <<endl;
++it;
}
return 0;
}
练习8.6:重写7.1.1节的书店程序,从一个文件中读取交易记录。将文件名作为一个参数传递给main。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cout;
- using std::cerr;
- using std::ifstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 2) {
- cerr<< "Please give the file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(cout, total) << endl;
- total =trans;
- }
- }
- print(cout, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.7:修改上一节的书店程序,将结果保存到一个文件中。将输出文件名作为第二个参数传递给main函数。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cerr;
- using std::ifstream;
- using std::ofstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 3) {
- cerr<< "Please give the input file name and out file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- ofstream out(argv[2]);
- if (!out) {
- cerr<<"can't open output file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(out, total) << endl;
- total =trans;
- }
- }
- print(out, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.8:修改上一题的程序,将结果追加到给定的文件末尾。对同一个输出文件,运行程序至少两次,检验数据是否得以保留。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cerr;
- using std::ifstream;
- using std::ofstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 3) {
- cerr<< "Please give the input file name and out file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- ofstream out(argv[2], ofstream::app);
- if (!out) {
- cerr<<"can't open output file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(out, total) << endl;
- total =trans;
- }
- }
- print(out, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.3.1:使用你为8.1.2节第一个练习所编写的函数打印一个istringstream对象的内容。
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <stdexcept>
- using std::istream;
- using std::ostringstream;
- using std::istringstream;
- using std::string;
- using std::cout;
- using std::cerr;
- using std::endl;
- using std::runtime_error;
- istream &f(istream &in)
- {
- int v;
- while(in >> v, !in.eof())
- {
- if(in.bad())
- throw runtime_error("IO Stream error.");
- if(in.fail())
- {
- cerr<<"Data error! Please try again."<<endl;
- in.clear();
- in.ignore(100, '\n');
- continue;
- }
- cout<< v <<endl;
- }
- in.clear();
- return in;
- }
- int main()
- {
- ostringstream msg;
- msg<<"C++ Primer 5th edition"<<endl;
- istringstream in(msg.str());
- f(in);
- return 0;
- }
练习8.10:编写程序,将来自一个文件中的行保存在一个vector<string>中。然后使用一个istringstream从vector读取数据元素,每次读取一个单词。
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cerr;
- using std::endl;
- using std::cout;
- using std::ifstream;
- using std::istringstream;
- using std::string;
- using std::vector;
- int main()
- {
- ifstream in("Data.txt");
- if (!in) {
- cerr<<" Can't open input file."<<endl;
- return -1;
- }
- string line;
- vector<string> words;
- while (getline(in, line)) {
- words.push_back(line);
- }
- in.close();
- vector<string>::const_iterator it = words.begin();
- while( it != words.end()) {
- istringstream line_str(*it);
- string word;
- while(line_str >> word)
- cout<< endl;
- ++it;
- }
- return 0;
- }
练习8.11:本节的程序在外层while循环中定义了istringstream对象。如果record对象定义在循环之外,你需要对程序进行怎么样的修改?重写程序,将record的定义移到while循环之外,验证你设想的修改方法是否正确。
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cin;
- using std::istringstream;
- using std::string;
- using std::vector;
- struct PersonInfo {
- string name;
- vector<string> phones;
- };
- int main()
- {
- string line, word;
- vector<PersonInfo> people;
- istringstream record;
- while (getline(cin,line)) {
- PersonInfo info;
- record.clear();
- record.str(line);
- record >> info.name;
- while (record >> word)
- info.phones.push_back(word);
- people.push_back(info);
- }
- return 0;
- }
练习8.12:我们为什么没有在PersonInfo中使用类内初始化?
由于每个人的电话号数量不固定,因此更好的方式不是通过类内初始化指定人名和所有电话号码,而是在缺省初始化之后,在程序中设置人名并逐个添加电话号码。
练习8.13:重写本节的电话号码程序,从一个命名文件而非cin读取数据。
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cerr;
- using std::endl;
- using std::cout;
- using std::ifstream;
- using std::istringstream;
- using std::ostringstream;
- using std::string;
- using std::vector;
- struct PersonInfo {
- string name;
- vector<string> phones;
- };
- string format(const string &s) { return s; }
- bool valid(const string &s)
- {
- return true;
- }
- int main(int argc, char *argv[])
- {
- string line, word;
- vector<PersonInfo> people;
- istringstream record;
- if (argc != 2) {
- cerr<<"Please give the file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if(!in)
- {
- cerr<<"can't open input file"<<endl;
- return -1;
- }
- while (getline(in, line)) {
- PersonInfo info;
- record.clear();
- record.str(line);
- record >> info.name;
- while(record >> word)
- info.phones.push_back(word);
- people.push_back(info);
- }
- ostringstream os;
- for (const auto &entry : people) {
- ostringstream formatted, badNums;
- for(const auto &nums : entry.phones) {
- if (!valid(nums)) {
- badNums << " "<< nums;
- }
- else
- formatted << " " <<format(nums);
- }
- if (badNums.str().empty())
- os <<entry.name<<" "<<formatted.str()<<endl;
- else
- cerr<<"input error: "<<entry.name<<" invalid number(s) "<<badNums.str()<<endl;
- }
- cout<<os.str()<<endl;
- return 0;
- }
练习8.14:我们为什么将entry和nums定义为const auto&?
这两条语句分别适用范围for语句枚举people中所有项和每项的phones中的所有项。使用const表明在循环中不会改变这些项的值;auto是请求编译器依据vector元素类型来推断出entry和nums的类型,既简化代码又避免出错;使用引用的原因是,people和phones的元素分别是结构对象和字符串对象,使用引用即可避免对象拷贝。
版权声明:本文为博主原创文章,未经博主允许不得转载。
顶2
踩0
练习8.1:编写函数。接受一个istream&参数,返回值类型也是istream&。此函数必须从给定流中读取数据,直至遇到文件结束标识时停止。
- #include <iostream>
- #include <stdexcept>
- using std::istream;
- using std::cin;
- using std::cout;
- using std::cerr;
- using std::endl;
- using std::runtime_error;
- istream &f(istream &in)
- {
- int v;
- while(in >> v, !in.eof())
- {
- if(in.bad())
- throw runtime_error("IO Stream error.");
- if(in.fail())
- {
- cerr<<"Data error! Please try again."<<endl;
- in.clear();
- in.ignore(100, '\n');
- continue;
- }
- cout<< v <<endl;
- }
- in.clear();
- return in;
- }
- int main()
- {
- cout<<"Please input some numbers, enter Ctrl+Z to end"<<endl;
- f(cin);
- return 0;
- }
练习8.3:什么情况下,下面的while循环会终止?
while (cin >> i) /*. . .*/
遇到文件结束符,或者遇到了IO流错误或者读入了无效数据。
练习8.4:编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <vector>
- using std::cout;
- using std::endl;
- using std::string;
- using std::ifstream;
- using std::cerr;
- using std::vector;
- int main()
- {
- ifstream in("data.txt");
- if(!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- string line;
- vector<string> words;
- while(getline(in, line))
- words.push_back(line);
- in.close();
- vector<string>::const_iterator it = words.cbegin();
- while (it != words.cend())
- {
- cout<< *it <<endl;
- ++it;
- }
- return 0;
- }
练习8.5:重写上面的程序,将每个单词作为一个独立的元素进行存储。
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <vector>
- using std::cout;
- using std::endl;
- using std::string;
- using std::ifstream;
- using std::cerr;
- using std::vector;
- int main()
- {
- ifstream in("data.txt");
- if(!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- string line;
- vector<string> words;
- while(in >> line)
- words.push_back(line);
- in.close();
- vector<string>::const_iterator it = words.cbegin();
- while (it != words.cend())
- {
- cout<< *it <<endl;
- ++it;
- }
- return 0;
- }
练习8.6:重写7.1.1节的书店程序,从一个文件中读取交易记录。将文件名作为一个参数传递给main。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cout;
- using std::cerr;
- using std::ifstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 2) {
- cerr<< "Please give the file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(cout, total) << endl;
- total =trans;
- }
- }
- print(cout, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.7:修改上一节的书店程序,将结果保存到一个文件中。将输出文件名作为第二个参数传递给main函数。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cerr;
- using std::ifstream;
- using std::ofstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 3) {
- cerr<< "Please give the input file name and out file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- ofstream out(argv[2]);
- if (!out) {
- cerr<<"can't open output file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(out, total) << endl;
- total =trans;
- }
- }
- print(out, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.8:修改上一题的程序,将结果追加到给定的文件末尾。对同一个输出文件,运行程序至少两次,检验数据是否得以保留。
- #include <iostream>
- #include <fstream>
- #include "Sales_data.h"
- using std::cerr;
- using std::ifstream;
- using std::ofstream;
- using std::endl;
- int main(int argc, char *argv[])
- {
- if (argc != 3) {
- cerr<< "Please give the input file name and out file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if (!in) {
- cerr<<"Can't open the file."<<endl;
- return -1;
- }
- ofstream out(argv[2], ofstream::app);
- if (!out) {
- cerr<<"can't open output file."<<endl;
- return -1;
- }
- Sales_data total;
- if (read(in, total)) {
- Sales_data trans;
- while(read(in ,trans)) {
- if(total.isbn() == trans.isbn())
- total.combine(trans);
- else {
- print(out, total) << endl;
- total =trans;
- }
- }
- print(out, total)<<endl;
- }
- else {
- cerr<<" No data?!"<<endl;
- }
- return 0;
- }
练习8.3.1:使用你为8.1.2节第一个练习所编写的函数打印一个istringstream对象的内容。
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <stdexcept>
- using std::istream;
- using std::ostringstream;
- using std::istringstream;
- using std::string;
- using std::cout;
- using std::cerr;
- using std::endl;
- using std::runtime_error;
- istream &f(istream &in)
- {
- int v;
- while(in >> v, !in.eof())
- {
- if(in.bad())
- throw runtime_error("IO Stream error.");
- if(in.fail())
- {
- cerr<<"Data error! Please try again."<<endl;
- in.clear();
- in.ignore(100, '\n');
- continue;
- }
- cout<< v <<endl;
- }
- in.clear();
- return in;
- }
- int main()
- {
- ostringstream msg;
- msg<<"C++ Primer 5th edition"<<endl;
- istringstream in(msg.str());
- f(in);
- return 0;
- }
练习8.10:编写程序,将来自一个文件中的行保存在一个vector<string>中。然后使用一个istringstream从vector读取数据元素,每次读取一个单词。
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cerr;
- using std::endl;
- using std::cout;
- using std::ifstream;
- using std::istringstream;
- using std::string;
- using std::vector;
- int main()
- {
- ifstream in("Data.txt");
- if (!in) {
- cerr<<" Can't open input file."<<endl;
- return -1;
- }
- string line;
- vector<string> words;
- while (getline(in, line)) {
- words.push_back(line);
- }
- in.close();
- vector<string>::const_iterator it = words.begin();
- while( it != words.end()) {
- istringstream line_str(*it);
- string word;
- while(line_str >> word)
- cout<< endl;
- ++it;
- }
- return 0;
- }
练习8.11:本节的程序在外层while循环中定义了istringstream对象。如果record对象定义在循环之外,你需要对程序进行怎么样的修改?重写程序,将record的定义移到while循环之外,验证你设想的修改方法是否正确。
- #include <iostream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cin;
- using std::istringstream;
- using std::string;
- using std::vector;
- struct PersonInfo {
- string name;
- vector<string> phones;
- };
- int main()
- {
- string line, word;
- vector<PersonInfo> people;
- istringstream record;
- while (getline(cin,line)) {
- PersonInfo info;
- record.clear();
- record.str(line);
- record >> info.name;
- while (record >> word)
- info.phones.push_back(word);
- people.push_back(info);
- }
- return 0;
- }
练习8.12:我们为什么没有在PersonInfo中使用类内初始化?
由于每个人的电话号数量不固定,因此更好的方式不是通过类内初始化指定人名和所有电话号码,而是在缺省初始化之后,在程序中设置人名并逐个添加电话号码。
练习8.13:重写本节的电话号码程序,从一个命名文件而非cin读取数据。
- #include <iostream>
- #include <fstream>
- #include <sstream>
- #include <string>
- #include <vector>
- using std::cerr;
- using std::endl;
- using std::cout;
- using std::ifstream;
- using std::istringstream;
- using std::ostringstream;
- using std::string;
- using std::vector;
- struct PersonInfo {
- string name;
- vector<string> phones;
- };
- string format(const string &s) { return s; }
- bool valid(const string &s)
- {
- return true;
- }
- int main(int argc, char *argv[])
- {
- string line, word;
- vector<PersonInfo> people;
- istringstream record;
- if (argc != 2) {
- cerr<<"Please give the file name."<<endl;
- return -1;
- }
- ifstream in(argv[1]);
- if(!in)
- {
- cerr<<"can't open input file"<<endl;
- return -1;
- }
- while (getline(in, line)) {
- PersonInfo info;
- record.clear();
- record.str(line);
- record >> info.name;
- while(record >> word)
- info.phones.push_back(word);
- people.push_back(info);
- }
- ostringstream os;
- for (const auto &entry : people) {
- ostringstream formatted, badNums;
- for(const auto &nums : entry.phones) {
- if (!valid(nums)) {
- badNums << " "<< nums;
- }
- else
- formatted << " " <<format(nums);
- }
- if (badNums.str().empty())
- os <<entry.name<<" "<<formatted.str()<<endl;
- else
- cerr<<"input error: "<<entry.name<<" invalid number(s) "<<badNums.str()<<endl;
- }
- cout<<os.str()<<endl;
- return 0;
- }
练习8.14:我们为什么将entry和nums定义为const auto&?
这两条语句分别适用范围for语句枚举people中所有项和每项的phones中的所有项。使用const表明在循环中不会改变这些项的值;auto是请求编译器依据vector元素类型来推断出entry和nums的类型,既简化代码又避免出错;使用引用的原因是,people和phones的元素分别是结构对象和字符串对象,使用引用即可避免对象拷贝。
版权声明:本文为博主原创文章,未经博主允许不得转载。
顶2
踩0
C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据的更多相关文章
- kernel中文件的读写操作可以使用vfs_read()和vfs_write
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...
- (六)kernel中文件的读写操作可以使用vfs_read()和vfs_write
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fil ...
- linux中文件I/O操作(系统I/O)
我们都知道linux下所有设备都是以文件存在的,所以当我们需要用到这些设备的时候,首先就需要打开它们,下面我们来详细了解一下文件I/O操作. 用到的文件I/O有以下几个操作:打开文件.读文件.写文件. ...
- Python中文件的读写操作
文件操作基本流程: 1. 介绍 计算机系统是由计算机硬件,操作系统,和应用程序三部分组成. 内存 存放不持久 硬盘 可以使数据持久化 文件操作 数据持久化的一种 全栈开发 框架类 2. 文件的操作 ...
- Python中文件路径名的操作
1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Pyth ...
- 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)
目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...
- 『无为则无心』Python基础 — 42、Python中文件的读写操作(二)
目录 (5)文件对象方法(重点) 1)写方法 2)读方法 3)seek()方法 4)tell()方法 (6)关闭 (7)综合练习:读取大文件 (5)文件对象方法(重点) 1)写方法 @1.语法 对象对 ...
- python中文件的基础操作
打开文件的三种方式: open(r'E:\学习日记\python\code\文件的简单操作.py') open('E:\\学习日记\\python\\code\\文件的简单操作.py') open(' ...
- python 中文件夹的操作
文件有两个管家属性:路径和文件名. 路径指明了文件在磁盘的位置,文件名原点的后面部分称为扩展名(后缀),它指明了文件的类型. 一:文件夹操作 Python中os 模块可以处理文件夹 1,当前工作目录 ...
- Python中文件的读写操作的几种方法
对文件的操作,步骤为:打开一个文件-->读取/写入内容-->保存文件 文件读写的3中模式 # 1.w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写 ...
随机推荐
- 在IDEA离线安装lombok插件
1.打开,找到自己IDEA版本,idea http://plugins.jetbrains.com/plugin/6317-lombok/versions 2.下载,导入安装
- ajax传map,后端接收并解析
前端let map = new Map(); map.set(1, 1); map.set(2, 2); map.set(3, 3); //map转obj let obj= Object.create ...
- oracle 基础sql语句
修改date日期时间: update T2_FOODS_STORAGE_IN set create_time =to_date('2020-01-15 12:30:20','yyyy-mm-dd hh ...
- 简单的jquery Ajax进行登录!
本案例包括login.html.login.php.jquery-1.12.0.min.js三个文件,只需将这三个文件放到同一文件夹下,即可运行. login.html: <!DOCTYPE h ...
- oracle常见的函数
1.字符函数 -- initcap函数只针对英文 select * from tb_user where user_name = initcap('张三'); -- ltrim 左剪切 select ...
- pb加密转换成C#
本来想把PB 的函数封装成COM组件调用,结果怎么都搞不定,只能讲代码搞出来换种语言实现了. string s_ret integer i_first,i_second,i_third,i_fourt ...
- Centos 安装 mysql 5.7
下载mysql yum包 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm 安转软件源 xxx.rpm是刚刚 ...
- Spring Boot 使用 CXF 调用 WebService 服务
上一张我们讲到 Spring Boot 开发 WebService 服务,本章研究基于 CXF 调用 WebService.另外本来想写一篇 xfire 作为 client 端来调用 webservi ...
- WARNING: bridge-nf-call-iptables is disabled解决
执行docker info出现如下警告 WARNING: bridge-nf-call-iptables is disabledWARNING: bridge-nf-call-ip6tables is ...
- java获取tomcat中的properties文件
System.getProperty("catalina.home") 获取tomcat的绝对路径 获取文件的绝对路径 在windous中拼接路径是" \ " ...